malloc調用如何由用戶庫管理。我需要解釋「當malloc被調用時,如何在用戶空間分配內存,誰管理它,就像調用sbrk()進入內核空間一樣」。動態分配內存
Q
動態分配內存
1
A
回答
4
malloc()函數包管理空間。它使用sbrk()從系統中獲得相對較大的內存塊,並根據請求使用它設計使用的許多可能算法中的任何一種,將較小的塊傳遞給其調用者。 free()函數將釋放的內存放回到「可用」內存列表中。它很少真正將內存釋放回操作系統本身。
有很多關於不同版本malloc()的設計的文章。有許多malloc()的調試版本,特別是尋找分配內存的濫用情況。您可以在Knuth的「計算機編程藝術」中閱讀關於內存分配的內容;它在我的記憶服務第1卷。
6
C運行時庫管理堆。堆有一些預先分配的免費商店。如果運行時無法找到連續的塊,則它會嘗試從操作系統請求更多內存 - 調用sbrk()
。
如果後者失敗「內存不足」被報告 - malloc()
返回空指針。如果成功請求了額外的內存,並且接收到的塊大於malloc()
調用者請求塊中塊的內容被劃分 - 一部分被標記爲佔用並返回給調用者,另一部分被添加到免費存儲區。
從sbrk()
成功返回時起,內存塊屬於調用程序地址空間。
相關問題
- 1. 動態內存分配
- 2. 動態內存分配
- 3. java動態內存分配
- 4. 動態內存分配
- 5. RECV動態內存分配
- 6. 動態內存分配
- 7. 動態內存分配在C++上的動態分配內存中
- 8. 內存分配和動態內存分配
- 9. 動態內存分配不匹配
- 10. 動態與靜態內存分配
- 11. 動態內存分配問題
- 12. 使用malloc分配動態內存
- 13. 動態分配內存的所有權
- 14. 使用fgets +動態內存分配
- 15. fortran77中的動態內存分配
- 16. 動態內存分配教材?
- 17. 帶字符的動態內存分配
- 18. scanf之後的動態內存分配
- 19. Mips動態內存分配和指針
- 20. 動態內存分配套接字C
- 21. 動態內存分配 - 二維數組
- 22. MPI中的動態內存分配
- 23. auto_ptr的動態內存分配
- 24. 二維動態內存分配 - ObjectiveC
- 25. 在GPU上動態分配內存
- 26. 動態內存分配在for循環
- 27. int數組的動態內存分配
- 28. VB6中的動態內存分配
- 29. 動態鎖定內存分配器
- 30. Arraylists的動態內存分配?
你將需要解釋你的意思。 – 2009-10-28 06:38:51
...並搜索所以,你可能會找到你需要的! – dirkgently 2009-10-28 06:42:37