C++核心編程之內(nèi)存分區(qū)詳解
1、內(nèi)存分區(qū)模型:
C++程序在執(zhí)行時,將內(nèi)存大方向劃分成4個區(qū)域
(1)代碼區(qū):存放安徽念書體的二進制代碼,由操作系統(tǒng)進行管理的
(2)全局區(qū):存放全局變量和靜態(tài)變量以及常量
(3)棧區(qū):由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量等
(4)堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結(jié)束時由操作系統(tǒng)回收
內(nèi)存四區(qū)意義:不同區(qū)域存放的數(shù)據(jù),賦予不同的生命周期,給我們更大的靈活編程
2、代碼區(qū):
在程序編譯后,生成了exe可執(zhí)行程序,未執(zhí)行該程序前分為兩個區(qū)域
代碼區(qū):
(1)存放CPU執(zhí)行的機器指令(二進制的機器指令)
(2)代碼區(qū)是共享的,共享的目的是對于頻繁被執(zhí)行的程序,只需要在內(nèi)存中有一份代碼即可
(3)代碼區(qū)是只讀的,使其只讀的原因是防止程序意外地修改了它的指令
3、全局區(qū):
(1)全局變量和靜態(tài)變量存放在此
(2)全局區(qū)還包括了常量區(qū),字符串常量和其他常量也存放在此(字符串常量和const修飾的全局變量)
(3)該區(qū)域的數(shù)據(jù)在程序結(jié)束后由操作系統(tǒng)釋放(不是由我們來控制的)
不在全局區(qū)中的:
1、局部變量
2、const修飾的局部變量(局部常量)
4、小結(jié):
1.C++中在程序運行前分為全局區(qū)和代碼區(qū)
2.代碼區(qū)特點是共享和只讀
3.全局區(qū)中存放全局變量、靜態(tài)變量、常量
4.常量區(qū)中存放const修飾的全局常量和字符串常量
5、代碼演示:
//程序的內(nèi)存模型-內(nèi)存四區(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、運行結(jié)果:

總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
exec()函數(shù)在C++中的應(yīng)用及其用法
exec()函數(shù)在C++中是一個進程控制函數(shù),用于創(chuàng)建新進程執(zhí)行其他程序或命令行指令。exec()函數(shù)可以替換當(dāng)前進程的代碼和數(shù)據(jù),創(chuàng)建新的進程運行其他程序。exec()函數(shù)有多個版本,例如execl、execv、execle、execve等,根據(jù)不同的參數(shù)類型和個數(shù)來使用2023-05-05

