代碼的記憶體主要分為四個區間
- 代碼區
- 全域區
- 堆疊區
- 堆區
其中代碼區和全域區是運行前的,堆疊區和堆區是運行后的,即如果exe檔案不運行,就沒有堆疊區和堆區,
1,代碼區
即為程式編程exe檔案后的代碼
特點:
- 只有一份
因為程式不可能運行一次,重新把所有代碼重新復制一遍,所以代碼區只有一份
- 保密性
程式變成exe檔案之后,就不呢查看這個exe檔案的源代碼
2,全域區
- 全域變數
- static靜態變數
- 常量(需要注意只有全域變數才是全域區)
常量需要注意的原因是因為,雖然區域常量看似不能修改,但是可以通過指標指向該地址的方法進行修改,所以區域的常量是可以被修改的,因此區域常量的地址并不在全域區
直接看代碼:
#include<iostream>
using namespace std;
int a = 10;
int aa = 20;
const int d = 10;
const int dd = 20;
int main()
{
int b = 10;
int bb = 20;
static int c = 10;
static int cc = 20;
const int e = 10;
const int ee = 20;
cout << "全域變數 " << int(&a) << endl;
cout << "全域變數 " << int(&aa) << endl << endl;
cout << "區域變數 " << int(&b) << endl;
cout << "區域變數 " << int(&bb) << endl << endl;
cout << "靜態變數 " << int(&c) << endl;
cout << "靜態變數 " << int(&cc) << endl << endl;
cout << "全域常量 " << int(&d) << endl;
cout << "全域常量 " << int(&dd) << endl << endl;
cout << "區域常量 " << int(&e) << endl;
cout << "區域常量 " << int(&ee) << endl;
system("pause");
return 0;
}

可以看出區域常量和區域變數的地址比較接近,而其他三種比較接近
3,堆疊區
特點:
- 自動申請,自動釋放,編譯器管理
主要有區域引數,函式中的引數
4,堆區
- 手動申請,手動釋放,程式員管理
- 如果不釋放,編譯器會幫你釋放
主要是new出來的物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/246209.html
標籤:其他
下一篇:絕對對對對對親民的鏈表入門
