程式執行後
new操作符
c++程式在執行時,將記憶體大方向劃分為4個區域
不同區域存放的資料,賦予不同的生命週期~
在程式編譯後,生成了exe可執行程式,未執行該程式前分為兩個區域
**區 存放 cpu 執行的機器指令
**區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份**即可
**區是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令
全域性區 全域性變數和靜態變數存放在此.
全域性區還包含了常量區, 字串常量和其他常量也存放在此.
該區域的資料在程式結束後由作業系統釋放.
#include
using
namespace std;
//全域性變數
int g_a =10;
int g_b =10;
//全域性常量
棧區 由編譯器自動分配釋放, 存放函式的引數值,區域性變數等
#include
using
namespace std;
//棧區資料注意事項 ---------- 不要返回區域性變數的位址
//棧區的資料由編譯器管理和釋放
int*
func
(int b)
//形引數據也會放在棧區
堆區 由程式設計師分配釋放,若程式設計師不釋放,程式結束時由作業系統**
在c++中主要利用new在堆區開闢記憶體
c++中利用new操作符在堆區開闢資料
堆區開闢的資料,由程式設計師手動開闢,手動釋放,釋放利用操作符 delete
語法:new 資料型別
利用new建立的資料,會返回該資料對應的型別的指標
#include
using
namespace std;
int*
func()
intmain()
//堆區開闢陣列
#include
using
namespace std;
//堆區開闢陣列
intmain()
for(
int i =
0; i <
10; i++
)//釋放陣列 delete 後加
delete
arr;
system
("pause");
return0;
}
c 學習之記憶體分割槽模型
c 程式在執行時,將記憶體大致分為4個取區域。區 存放函式體的二進位制 由作業系統進行管理。全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,則程式結束時由作業系統 在程式編譯後,生成了.exe可...
C 學習之記憶體分割槽模型
c 程式執行時,主要分為4個區域 區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配釋放,若程式設計師不釋放,程式結束時作業系統 有四個區的概念對於程式設計靈活性提高有很大的幫助...
一 JVM之記憶體分割槽
jvm將執行j a程式的記憶體劃分為不同的資料區域 1.1 程式計數器 程式計數器是記憶體區域中一塊比較小的記憶體空間。它的作用就像是乙個指向正在執行的位元組碼行號的指標。改變計數器的值來指向當前要執行的位元組碼指令。並且由於j a多執行緒也是分配時間片的模式來實現的,在單核處理器過程中,執行緒的切...