談到自由儲存區與堆的區別,就需要了解new與malloc的區別。
實際上堆是c語言的關鍵術語,是作業系統所維護的一塊特殊記憶體,它提供了動態分配的功能。使用者使用malloc進行堆記憶體申請,使用free實現堆記憶體的釋放。
但自由儲存區不同,它是c++中的乙個抽象的概念。c++中規定使用new/delete申請和釋放的的區域被稱為自由儲存區。因此,自由儲存區的實際位置和new/delete申請/釋放的位置有關。大部分編譯器中new申請空間都是由malloc實現,預設是在堆上實現自由儲存。但是使用者也可以通過過載new在其他記憶體區域(例如全域性區)實現資料的自由儲存,此區域也將成為自由儲存區。
總結,自由儲存區不等於堆區,堆是作業系統所維護的一塊特殊記憶體,自由儲存區是一種抽象概念,使用new/delete申請和釋放的的區域都被稱為自由儲存區
自由儲存區和堆
當我問你c 的記憶體布局時,你大概會回答 在c 中,記憶體區分為5個區,分別是堆 棧 自由儲存區 全域性 靜態儲存區 常量儲存區 如果我接著問你自由儲存區與堆有什麼區別,你或許這樣回答 malloc在堆上分配的記憶體塊,使用free釋放記憶體,而new所申請的記憶體則是在自由儲存區上,使用delet...
「堆」和「自由儲存區」
c c 中的記憶體分為幾個區?通常分為5個區 堆 棧 自由儲存區 全域性 靜態儲存區 常量儲存區 堆和自由儲存區有什麼不同嗎?書上通常這麼說 malloc free在堆上申請和釋放記憶體,new delete在自由儲存區上申請和釋放記憶體。堆 heap c語言和作業系統的術語,堆是作業系統所維護的一...
自由儲存區VS堆
當我問你c 的記憶體布局時,你大概會回答 在c 中,記憶體區分為5個區,分別是堆 棧 自由儲存區 全域性 靜態儲存區 常量儲存區 如果我接著問你自由儲存區與堆有什麼區別,你或許這樣回答 malloc在堆上分配的記憶體塊,使用free釋放記憶體,而new所申請的記憶體則是在自由儲存區上,使用delet...