这是正常的吧。
不论是 windows 还是 linux. 程序申请内存都分两次。一次是 libc/msvcrt 用 mmap/brk/VirtualAlloc 从操作系统申请内存,第二次是程序员的代码调用 malloc/new 从 libc 里面申请内存。
为了应对程序员代码快速申请内存的需求, libc 肯定不会把把 delete 掉的内存立即释放给操作系统的。所以此时你观察到 process explorer 内存占用没有掉下来。任务管理器除非和 vs 有什么接口,不然我怀疑内存也没有降下来。
【 在 bn95 的大作中提到: 】
: 又做了很多实验。在VS222调试模式下,任务管理器和VS中显示的进程的占用内存数据才是真实的而且是实时的,计算完成后,内存占用也会从36G回到0G。
: 除此之外,没有任何工具能从外部观察到进程真正申请的内存的大小,ProcessExplorer不行,vmmap64.exe也不行,任务管理器更不行,这些工具记录的好像是操作系统给进程准备的内存大小,而不是进程已经申请正在使用的。
--
修改:hgoldfish FROM 183.253.143.*
FROM 183.253.143.*