2017-02-22 42 views

回答

2

術語「內存分配器」在定義C語言的標準中沒有任何含義。然而,他們確實定義了一套C運行時間庫必須提供的「內存管理函數」,所以我認爲這是你所問的這些函數。

這些標準還沒有定義,其中甚至如何記憶是從,只是功能malloccallocreallocfree必須存在並有指定的語義分配。所以,由實現決定從哪裏分配內存。

術語「未初始化的數據段」通常是指已編譯的可執行文件的一部分,它指定加載程序應爲程序保留一定量的內存以供使用。在所有我知道的實現(或者至少那些「未初始化的數據段」這個術語具有含義的實現)中,該部分用於未初始化的靜態變量。

在大多數實現中,C運行時將通過調用操作系統內核來形成堆,以獲得內存塊,然後將其分配給程序。

對於Linux here中的進程內存佈局有很好的描述。

相關問題