-
釋放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