当企图delete没有分配内存的指针时,会在这里HeapFree处异常

    {
            retval = HeapFree(_crtheap, 0, pBlock);
            if (retval == 0)
            {
                errno = _get_errno_from_oserr(GetLastError());
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统实际内存分配演示是一个比较复杂的过程,下面我简单地介绍一下。 在Linux平台下,内存分配主要由以下几个部分组成: 1. 物理内存管理 2. 虚拟内存管理 3. 进程内存管理 在物理内存管理中,Linux将物理内存分为许多大小相等的页,通常为4KB。物理内存管理的任务是跟踪哪些页被使用,哪些页没有被使用。当需要申请新的内存,Linux先检查物理内存的可用情况,如果没有足够的空闲页,则使用虚拟内存。 虚拟内存管理允许Linux将进程的逻辑地址空间映射到物理地址空间中。在Linux中,每个进程都有自己的虚拟地址空间,该空间是相互独立的。当进程需要访问内存,它使用虚拟地址进行访问,而不必关心物理地址。 进程内存管理包括分配和释放进程的虚拟地址空间。当进程需要申请新的内存,它调用malloc()函数来分配内存。当进程不再需要这些内存,它调用free()函数来释放它们。 在Windows平台下,内存管理主要由以下几个部分组成: 1. 物理内存管理 2. 虚拟内存管理 3. 进程内存管理 Windows使用页面文件来扩展物理内存。页面文件是一个特殊的文件,用于保存进程不常用的内存页面。当物理内存不足,Windows将这些页面从物理内存中换出,并将它们写入页面文件中。当需要使用这些页面,Windows从页面文件中读取它们,并将它们放回到物理内存中。 虚拟内存管理允许Windows将进程的逻辑地址空间映射到物理地址空间中。在Windows中,每个进程都有自己的虚拟地址空间,该空间是相互独立的。当进程需要访问内存,它使用虚拟地址进行访问,而不必关心物理地址。 进程内存管理包括分配和释放进程的虚拟地址空间。当进程需要申请新的内存,它调用HeapAlloc()函数来分配内存。当进程不再需要这些内存,它调用HeapFree()函数来释放它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值