补充下:
1 delete后不只是不立即释放的问题,而是不管多久都不会释放,除非其他进程导致物理内存吃紧了,才会逐步释放,而且这个释放只是将物理内存转到缓存,其提交大小不会变化,所以算不上真正的释放。
2 VS调试模式下,delete后是立即释放的,VS和任务管理器上都是显示的实时的真实的内存占用。
【 在 hgoldfish 的大作中提到: 】
: 这是正常的吧。
: 不论是 windows 还是 linux. 程序申请内存都分两次。一次是 libc/msvcrt 用 mmap/brk/VirtualAlloc 从操作系统申请内存,第二次是程序员的代码调用 malloc/new 从 libc 里面申请内存。
: 为了应对程序员代码快速申请内存的需求, libc 肯定不会把把 delete 掉的内存立即释放给操作系统的。所以此时你观察到 process explorer 内存占用没有掉下来。任务管理器除非和 vs 有什么接口,不然我怀疑内存也没有降下来。
: ...................
--
修改:bn95 FROM 111.48.114.*
FROM 111.48.114.*