我在
Linux中编写了一个C语言程序,用于mallocs内存,在循环中运行它,而TOP没有
显示任何内存消耗.
然后我用那个记忆做了一些事情,TOP确实显示了内存消耗.
当我在malloc时,我真的“得到了内存”,还是有一个“懒惰”的内存管理,只有在我使用它时才给我内存?
(还有一个选项,当我使用它时TOP才知道内存消耗,所以我不确定这个…)
谢谢
在Linux上,malloc使用sbrk()或mmap()请求内存 – 无论哪种方式,您的地址空间都会立即扩展,但Linux在第一次写入相关
页面之前不会分配实际的物理内存
页面.您可以在VIRT列中看到地址空间扩展,而在RES中可以看到实际的物理内存使用情况.