C++的内存分配和释放的有关问题

C++的内存分配和释放的问题
书中写到C++分配内存有三种区域:static memory、stack memory、dynamic memory。
这三种内存区域在物理内存中对应着什么?
这三种内存区域的大小有什么限制么?
还有就是使用delete删除dynamic memory中的对象时,是不是删除语句执行后内存立即释放?还是和Java中的GC似的不立即释放?
------解决方案--------------------
引用:
书中写到C++分配内存有三种区域:static memory、stack memory、dynamic memory。
这三种内存区域在物理内存中对应着什么?
这三种内存区域的大小有什么限制么?
还有就是使用delete删除dynamic memory中的对象时,是不是删除语句执行后内存立即释放?还是和Java中的GC似的不立即释放?


static memory 全局区
stack memory 栈上 (vs默认1MB)
dynamic memory 堆上

delete删除dynamic memory中的对象时,立即标记为可用。

------解决方案--------------------
引用
这三种内存区域在物理内存中对应着什么?


物理内存有操作系统管理,具体如何映射,程序员不该关心。 

引用
这三种内存区域的大小有什么限制么?

每个线程都有自己的栈, 大小在链接的时候已经限定了。 申请的内存总和不能超过进程空间大小。  

引用
还有就是使用delete删除dynamic memory中的对象时,是不是删除语句执行后内存立即释放?还是和Java中的GC似的不立即释放? 

立即释放。但未必会真正归还给OS。
------解决方案--------------------
VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533