日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 程序运行前内存分区模型

發布時間:2025/3/15 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 程序运行前内存分区模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++核心編程
本階段主要針對C++面向對象編程技術做詳細講解,探討C++中的核心和精髓。
1、內存分區模型
C++程序在執行時,將內存大方向劃分為4個區域
●代碼區:存放函數體的二進制代碼,由操作系統進行管理的
●全局區:存放全局變量和靜態變量以及常量
●棧區:|由編譯器自動分配釋放,存放函數的參數值,局部變量等
●堆區:由程序員分配和釋放若程序員不釋放程序結束時由操作系統回收
內存四區意義:
不同區域存放的數據,賦予不同的生命周期,給我們更大的靈活編程

1.1程序運行前
在程序編譯后,生成了exe可執行程序,未執行該程序前分為兩個區域
代碼區:
存放CPU執行的機器指令
代碼區是共享的,共享的目的是對于頻繁被執行的程序,只需要在內存中有一份代碼即可
代碼區是只讀的,使其只讀的原因是防止程序意外地修改了它的指令
全局區:
全局變量和靜態變量存放在此.
全局區還包含了常量區,字符串常量和其他常量也存放在此.
該區域的數據在程序結束后由操作系統釋放.

#include<iostream> #include<string> using namespace std;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; system(" pause") ;}

全局變量:

#include<iostream> #include<string> using namespace std;int g_a = 10; int g_b = 10;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; cout << "全局變量g_a的地址為 : " << (int)&g_a << endl;cout << "全局變量g_b的地址為 : " << (int)&g_b << endl;system(" pause") ;}

局部變量的內存地址和全局變量的內存地址明顯不不一塊區域

靜態變量:

#include<iostream> #include<string> using namespace std;int g_a = 10; int g_b = 10;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; cout << "全局變量g_a的地址為 : " << (int)&g_a << endl;cout << "全局變量g_b的地址為 : " << (int)&g_b << endl;//靜態變量 在普通變量前用static關鍵字修飾static int g_a = 10;static int g_b = 10;cout << "靜態變量g_a的地址為 : " << (int)&g_a << endl;cout << "靜態變量g_b的地址為 : " << (int)&g_b << endl;system(" pause") ;}

?

字符串常量:

#include<iostream> #include<string> using namespace std;int g_a = 10; int g_b = 10;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; cout << "全局變量g_a的地址為 : " << (int)&g_a << endl;cout << "全局變量g_b的地址為 : " << (int)&g_b << endl;//靜態變量 在普通變量前用static關鍵字修飾static int g_a = 10;static int g_b = 10;cout << "靜態變量g_a的地址為 : " << (int)&g_a << endl;cout << "靜態變量g_b的地址為 : " << (int)&g_b << endl;//常量//字符串常量cout << "he1lo world字符串常量的地址為:" << (int)&"he1lo world" << endl;//const修飾的變量system(" pause") ;}

#include<iostream> #include<string> using namespace std;int g_a = 10; int g_b = 10;const int c_g_a = 10; //const修飾的全局變量 全局的常量 const int c_g_b = 10;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; cout << "全局變量g_a的地址為 : " << (int)&g_a << endl;cout << "全局變量g_b的地址為 : " << (int)&g_b << endl;//靜態變量 在普通變量前用static關鍵字修飾static int g_a = 10;static int g_b = 10;cout << "靜態變量g_a的地址為 : " << (int)&g_a << endl;cout << "靜態變量g_b的地址為 : " << (int)&g_b << endl;//常量//字符串常量cout << "he1lo world字符串常量的地址為:" << (int)&"he1lo world" << endl;//const修飾的變量//const修飾的全局變量,const修 飾的局部變量、cout << " 全局常量 c_g_a的地址為 : " << (int)&c_g_a << endl;cout << " 全局常量 c_g_b的地址為 : " << (int)&c_g_b << endl;system("pause") ;}

?全局常量:

?

#include<iostream> #include<string> using namespace std;int g_a = 10; int g_b = 10;const int c_g_a = 10; //const修飾的全局變量 全局的常量 const int c_g_b = 10;int main() {//創建普通局部變量int a = 10;int b = 10;cout << "局部變量a的地址為:" << (int)&a << endl;cout << "局部變量b的地址為:" << (int)&b << endl; cout << "全局變量g_a的地址為 : " << (int)&g_a << endl;cout << "全局變量g_b的地址為 : " << (int)&g_b << endl;//靜態變量 在普通變量前用static關鍵字修飾static int g_a = 10;static int g_b = 10;cout << "靜態變量g_a的地址為 : " << (int)&g_a << endl;cout << "靜態變量g_b的地址為 : " << (int)&g_b << endl;//常量//字符串常量cout << "he1lo world字符串常量的地址為:" << (int)&"he1lo world" << endl;//const修飾的變量//const修飾的全局變量,const修 飾的局部變量、cout << " 全局常量 c_g_a的地址為 : " << (int)&c_g_a << endl;cout << " 全局常量 c_g_b的地址為 : " << (int)&c_g_b << endl;const int c_l_a = 10; // c-const g - global 1 - 1ocalconst int c_l_b = 10;cout << " 局部常量c_l_a的地址為 : " << (int)&c_l_a << endl;cout << " 局部常量c_l_b的地址為 : " << (int)&c_l_b << endl;system("pause") ;}

總結:

總結

以上是生活随笔為你收集整理的C++ 程序运行前内存分区模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。