1.c++程式在執行時,將記憶體大方向劃分為4個區域
2.程式執行前
(1)**區
存放 cpu 執行的機器指令
**區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份**即可
**區是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令
(2)全域性區
全域性變數和靜態變數存放在此.
全域性區還包含了常量區, 字串常量和const修飾的全域性常量也存放在此.
該區域的資料在程式結束後由作業系統釋放.
(3)總結
3.程式執行後
(1)棧區
由編譯器自動分配釋放, 存放函式的引數值(形參),區域性變數等
(2)堆區
由程式設計師分配釋放,若程式設計師不釋放,程式結束時由作業系統**
在c++中主要利用new在堆區開闢記憶體
c 記憶體模型
1 棧區 由編譯器自動分配和釋放,存放函式的引數數值,區域性變數的值 其操作方式類似於資料結構中得棧 2 堆區一般由使用者分配和釋放,若使用者不釋放,程式結束時候由os 它與資料結構中堆是兩回事,分配方式類似鍊錶 3 全域性區 靜態區 static全域性變數和靜態變數的存放區域。初始化的全域性變數和...
C 記憶體模型
1.在c 中,不要在標頭檔案中進行變數宣告。因為單定義規則的存在,不同原始檔中對於同乙個全域性變數只能夠定義一次。因此如果在標頭檔案中包含變數定義,那麼很有可能使用相同標頭檔案的原始檔會對這個變數產生多次定義。2.new 與 delete等通過動態分配記憶體產生的資料將儲存在堆 heap 中。3.在...
C記憶體模型
程式執行時作業系統把磁碟的 load到記憶體,然後分配給該程序乙個記憶體空間,分為堆區,棧區,全域性區和 區如圖1所示。作業系統找到main函式開始執行程式。圖1 記憶體模型 區 存放程式的二進位制 全域性區 全域性變數和靜態變數。初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數和未初始...