-
释放calloc(1024 * 1024 * 1024,的sizeof(INT));
我检查我的程序的使用,它是零,但是我从来不打了一个电话给
free
编辑:
运行Debian杰西
编辑2:
我使用顶部作为系统监视器
释放calloc(1024 * 1024 * 1024,的sizeof(INT));
我检查我的程序的使用,它是零,但是我从来不打了一个电话给free
编辑:
运行Debian杰西
编辑2:
我使用顶部作为系统监视器
Linux会执行懒惰的内存分配。只有当标记为分配的页面出现页面错误时,Linux才会将其视为正在使用。尝试写入分配的数据中的一个字节并再次检查内存使用情况。有关Linux中内存分配的更多信息,请检查http://www.tldp.org/LDP/tlk/mm/memory.html。
此外,即使calloc归零分配的内存,它仍然可以以懒惰的方式完成,导致您所描述的行为。见How to lazy allocate zeroed memory?。
。将它改为4GB,并且当我将值设置为随机整数时,它才开始上升 – peter
您的示例仅分配了几个K,可能太小而无法看到。但即使你要求更大量的内存,在实际使用内存之前也不会看到使用情况。
默认情况下,Linux不会实际分配内存页面,除非您以某种方式触摸它们。虽然calloc应该将内存初始化为零,但这不会被视为触及它,因为内部会跟踪未初始化的页面,并在读取时返回零。
请提供有关您的问题的更多信息,例如您如何检查内存使用情况,这将有助于他人了解您的实际含义。 – oxnz
你看过哪列?您确定顶级程序没有将内存使用量上下舍入到最接近的MB或十分之一MB? – nos
所以我们应该猜猜你想要代码或什么?请看我看到的一些代码 – Michi