C 記憶體筆記

2021-06-28 04:11:29 字數 340 閱讀 3329

在c++中,記憶體一般分為5個區,分別為:堆,棧、自由儲存區、全域性靜態儲存區、常量儲存區;

(1)棧:執行函式時,函式內區域性變數的儲存單元可以在棧上建立,函式執行結束時,記憶體自動被釋放,棧記憶體分配運算內置於處理器的指令集中,效率很高但是分配的記憶體變數有線;

(2)堆:就是那些由new分配的記憶體塊,編譯器不負責記憶體的釋放,而是由應用程式來控制。一般乙個new對應於乙個delete;

(3)自由儲存區:有malloc分配的記憶體塊,釋放的時候由free來執行;

(4)全域性/靜態儲存區,全域性變數和靜態變數被分配到同一塊記憶體中;

(5)常量儲存區:這是一塊較為特殊的記憶體區,存放的都是常量,不允許修改;

C 記憶體筆記

乙個程式本質上由bss段 data段 texe段,三個組成。靜態記憶體 bss 未初始化的全域性變數的一塊記憶體區域。靜態記憶體 資料段 已初始化的全域性變數。段 用來存放程式執行 唯讀。堆 heap 一般新分配的記憶體如malloc就是堆擴大 棧 stack 使用者存放程式臨時建立的區域性變數。s...

C 筆記 記憶體分配

在學習c 控制記憶體分配部分主要區別以下幾組函式 malloc free operator new delete new operator delete和placement new delete 二者都可以從堆中申請和分配動態記憶體,並且二者都必須成對匹配使用,才可以正確完成記憶體的的申請和釋放功能...

C學習筆記 記憶體管理

乙個c語言變數的作用域可以是 塊 作用域,函式作用域或者檔案作用域 塊是 之間的一段 同乙個 塊不可以有重名變數 auto自動變數 一般情況下 塊內部定義的變數都是自動變數 也可以顯示的使用aotu關鍵字 auto int i register暫存器變數 通常變數在記憶體當中,如果能把變數放到cpu...