在c++中程式的記憶體區域,可以分為四大部分吧:**區、全域性資料區、堆區、棧區。
**區:顧名思義它就是存放我們所打的**的放置區啦。
全域性資料區:存放程式的全域性資料和靜態資料
全域性資料:它有個關鍵字extern就是宣告全域性量的
#include using namespace std;
extern int a=10;//這個extern一般是不用寫,可以省略的
void main()
在這說一下在**的是全域性變數,在**的是區域性變數:
區域性變數:定義在函式內部的變數就是區域性變數,只能在其被宣告的函式內部被訪問。這樣的變數只在函式執行時存在,一旦退出函式,這些區域性變數就都被銷毀。所有在函式內部宣告的變數名稱都將被加入作用域中。
全域性變數:在函式外定義的,可以在整個程式範圍內訪問,如果要在某個函式內使用全域性變數的話,可以用作用域運算子」::"。
區域性資料:關鍵字static
#include using namespace std;
int text()
void main()
堆區:是存放程式的動態資料的,c++的動態儲存分配機制可以根據需要
在程式執行時建立和撤銷物件
那麼哪些才是用到堆區的呢?我們可以用new運算子動態分配堆記憶體,new和delete操作符都是成對出現的,使用形式:指標變數=new 型別(常量)、指標變數=new 型別[表示式]。
#include using namespace std;
void main()
{ int *p=null;
p=new int(1); //從堆中分配一塊int型別大小的儲存空間,放回首位址。
cout<<*p《關於程式的記憶體區域在這也差不多是這樣子啦,最後再說下識別符號的作用域:
1、 檔案作用域:比喻說全域性變數啊,任何在函式外宣告的識別符號都具有檔案作用域,對於任何乙個函式都是可見的。
2、 塊作用域:在語句塊中宣告的識別符號具有塊作用域,出了語句塊識別符號的作用域就會結束。
C語言程式記憶體區域組成
重點關注以下內容 c語言程式在記憶體中各個段的組成 c語言程式連線過程中的特性和常見錯誤 c語言程式的執行方式 由c語言 文字檔案 形成可執行程式 二進位制檔案 需要經過編譯 彙編 連線三個階段。編譯過程把c語言文字檔案生成匯程式設計序,彙編過程把匯程式設計序形成二進位制機器 連線過程則將各個原始檔...
C 中的記憶體區域
常量資料 常量資料區域主要用於儲存字串以及其他在編譯期就已經知道值得資料。例項化的物件不能儲存在這個區域。在程式的整個生存期內,這個區域中的所有資料都有效,而且都是唯讀的,對這些資料進行修改的結果在c 中是沒有定義的。一部分原因是編譯器可能會對常量資料的基本儲存格式進行任意的優化。例如,在某個特定的...
C語言程式的儲存區域 記憶體布局
c語言程式的儲存區域 由c語言 文字檔案 形成可執行程式 二進位制檔案 需要經過編譯 彙編 連線三個階段。編譯過程把c語言文字檔案生成匯程式設計序,彙編過程把匯程式設計序形成二進位制機器 連線過程則將各個原始檔生成的二進位制機器 檔案組合成乙個檔案。c語言編寫的程式經過編譯 連線後,將形成乙個統一檔...