[英]malloc function in virtual memory
我讀了malloc函數在堆上分配內存,堆位於OS(Linux)的虛擬內存中。 因此,我對此毫不懷疑:
如果正在通過malloc使用內存分配的進程被kill或退出自身而終止,而沒有取消分配內存。 終止后,操作系統會像虛擬內存中那樣重新分配該內存嗎?
Will that memory be deallocated by the OS after the termination?
是的,它會,但是我不會真正調用該釋放(例如,沒有人會在分配完所有之后調用free()); 發生的是分配給您進程的虛擬地址空間(包括堆棧,堆,代碼,.bss和任何其他段)僅從操作系統中刪除,因此映射到您進程虛擬內存的任何物理內存區域其他任何人都可以使用(無需換入/換出)。 有關此的更多信息,請閱讀這篇出色的文章 。
How can I know heap size in Linux OS?
ulimit -m
How can I change the heap size?
ulimit -S -m X(其中X是堆限制,以千字節為單位)
有關更詳盡的解釋,請訪問此SO問題 。
當分配給進程的內存正常釋放或終止時,將釋放該內存。 要設置/檢查堆大小,請使用ulimit :
ulimit -m # shows heap per process
ulimit -S -m 1000 # set heap size to 1000 * 1024 bytes
ulimit -S -m unlimited # unlimited heap size
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.