C++的内存分配和释放的有关问题
C++的内存分配和释放的问题
书中写到C++分配内存有三种区域:static memory、stack memory、dynamic memory。
这三种内存区域在物理内存中对应着什么?
这三种内存区域的大小有什么限制么?
还有就是使用delete删除dynamic memory中的对象时,是不是删除语句执行后内存立即释放?还是和Java中的GC似的不立即释放?
------解决方案--------------------
static memory 全局区
stack memory 栈上 (vs默认1MB)
dynamic memory 堆上
delete删除dynamic memory中的对象时,立即标记为可用。
------解决方案--------------------
物理内存有操作系统管理,具体如何映射,程序员不该关心。
每个线程都有自己的栈, 大小在链接的时候已经限定了。 申请的内存总和不能超过进程空间大小。
立即释放。但未必会真正归还给OS。
------解决方案--------------------
VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533
书中写到C++分配内存有三种区域:static memory、stack memory、dynamic memory。
这三种内存区域在物理内存中对应着什么?
这三种内存区域的大小有什么限制么?
还有就是使用delete删除dynamic memory中的对象时,是不是删除语句执行后内存立即释放?还是和Java中的GC似的不立即释放?
------解决方案--------------------
static memory 全局区
stack memory 栈上 (vs默认1MB)
dynamic memory 堆上
delete删除dynamic memory中的对象时,立即标记为可用。
------解决方案--------------------
物理内存有操作系统管理,具体如何映射,程序员不该关心。
每个线程都有自己的栈, 大小在链接的时候已经限定了。 申请的内存总和不能超过进程空间大小。
立即释放。但未必会真正归还给OS。
------解决方案--------------------
VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533