C++核心編程之內存分區(qū)詳解
1、內存分區(qū)模型:
C++程序在執(zhí)行時,將內存大方向劃分成4個區(qū)域
(1)代碼區(qū):存放安徽念書體的二進制代碼,由操作系統(tǒng)進行管理的
(2)全局區(qū):存放全局變量和靜態(tài)變量以及常量
(3)棧區(qū):由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量等
(4)堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結束時由操作系統(tǒng)回收
內存四區(qū)意義:不同區(qū)域存放的數(shù)據(jù),賦予不同的生命周期,給我們更大的靈活編程
2、代碼區(qū):
在程序編譯后,生成了exe可執(zhí)行程序,未執(zhí)行該程序前分為兩個區(qū)域
代碼區(qū):
(1)存放CPU執(zhí)行的機器指令(二進制的機器指令)
(2)代碼區(qū)是共享的,共享的目的是對于頻繁被執(zhí)行的程序,只需要在內存中有一份代碼即可
(3)代碼區(qū)是只讀的,使其只讀的原因是防止程序意外地修改了它的指令
3、全局區(qū):
(1)全局變量和靜態(tài)變量存放在此
(2)全局區(qū)還包括了常量區(qū),字符串常量和其他常量也存放在此(字符串常量和const修飾的全局變量)
(3)該區(qū)域的數(shù)據(jù)在程序結束后由操作系統(tǒng)釋放(不是由我們來控制的)
不在全局區(qū)中的:
1、局部變量
2、const修飾的局部變量(局部常量)
4、小結:
1.C++中在程序運行前分為全局區(qū)和代碼區(qū)
2.代碼區(qū)特點是共享和只讀
3.全局區(qū)中存放全局變量、靜態(tài)變量、常量
4.常量區(qū)中存放const修飾的全局常量和字符串常量
5、代碼演示:
//程序的內存模型-內存四區(qū)-全局區(qū)
#include <iostream>
using namespace std;
//1 全局變量
int g_a = 10;
int g_b = 10;
//const修飾的全局變量,全局常量
const int c_g_a = 10;
const int c_g_b = 10;
int main() {
//2 創(chuàng)建普通局部變量
int a = 10;
int b = 10;
cout << "The address of local variable a is: " << &a << endl;
cout << "The address of local variable b is: " << &b << endl;
cout << "Global variable g_a's address is: " << &g_a << endl;
cout << "Global variable g_b's address is: " << &g_b << endl;
//3 靜態(tài)變量 在普通變量前面加static,屬于靜態(tài)變量
static int s_a = 10;
static int s_b = 10;
cout << "The address of static variable s_a is: " << &s_a << endl;
cout << "The address of static variable s_b is: " << &s_b << endl;
//4 常量
//4.1 字符串常量
cout << "The address of the string constant is: " << &"Hello World" << endl;
//4.2 const修飾的變量
//4.2.1 const修飾的全局變量
cout << "Global constant c_g_a's address is: " << &c_g_a << endl;
cout << "Global constant c_g_b's address is: " << &c_g_b << endl;
//4.2.2 const修飾局部變量
const int c_l_a = 10;
const int c_l_b = 10;
cout << "Local constant c_l_a's address is: " << &c_l_a << endl;
cout << "Local constant c_l_b's address is: " << &c_l_b << endl;
return 0;
}6、運行結果:

總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
C語言函數(shù)指針與回調函數(shù)的實現(xiàn)
本文主要介紹了C語言函數(shù)指針與回調函數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
C++實現(xiàn)選擇性排序(SelectionSort)
這篇文章主要為大家詳細介紹了C++實現(xiàn)選擇性排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04

