內存分配的問題:關於malloc與free

關於內存分配,一直想看一看具體是如何實現的。這樣,我們就可以更好的避免可能的問題,減少內存的碎片與泄漏,使程序更加安全。

 

還要注意的是,所提供的malloc是不是一個可重入的實現。一般地,標準庫的實現都不是可重入的。因此,在一個存在重入問題的上下文中,應當採取一定的保護措施。比如,在單線程的環境中,在中斷中不使用malloc與free。在多線程環境中,用互斥信號量加以保護。當然,有些RTOS中提供的對應函數是線程安全的。這一點應當在使用前瞭解清楚。

 

[參考資料]

1.“Inside memory management, The choices, tradeoffs, and implementations of dynamic allocation”, by Jonathan Barlett, http://www.ibm.com/developerworks/linux/library/l-memory/

2. “Deterministic dynamic memory allocation & fragmentation in C & C++”, by Colin Walls, http://www.embedded.com/222300428?pgno=1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章