網站首頁 編程語言 正文
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、運行結果:
總結
原文鏈接:https://blog.csdn.net/weixin_48270094/article/details/123658303
相關推薦
- 2022-08-10 Python進階學習修改閉包內使用的外部變量_python
- 2022-06-01 利用20行Python?代碼實現(xiàn)加密通信_python
- 2022-03-26 C語言輸出孿生素數(shù)的實現(xiàn)示例_C 語言
- 2023-12-13 idea git只查看某個人提交的代碼記錄
- 2023-10-25 對于Echarts實例化與銷毀的一些運用
- 2021-12-02 Golang共享變量如何解決問題_Golang
- 2022-06-07 victoriaMetrics庫布隆過濾器初始化及使用詳解_Golang
- 2022-05-11 使用kettle的數(shù)據(jù)庫增量備份與全量備份
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支