網(wǎng)站首頁 編程語言 正文
1、內(nèi)存分區(qū)模型:
C++程序在執(zhí)行時,將內(nèi)存大方向劃分成4個區(qū)域
(1)代碼區(qū):存放安徽念書體的二進(jìn)制代碼,由操作系統(tǒng)進(jìn)行管理的
(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í)行的機(jī)器指令(二進(jìn)制的機(jī)器指令)
(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é)
原文鏈接:https://blog.csdn.net/weixin_48270094/article/details/123658303
相關(guān)推薦
- 2022-05-05 Android開發(fā)使用WebView打造web?app示例代碼_Android
- 2022-10-30 C++中線程池ThreadPool源碼解析_C 語言
- 2023-01-20 Go語言實現(xiàn)定時器的原理及使用詳解_Golang
- 2022-06-06 typescript中abstractClass(抽象類)、extends、abstract
- 2022-05-18 python操作jira添加模塊的方法_python
- 2022-09-29 Shell函數(shù)返回值方式_linux shell
- 2022-10-05 Python中matplotlib庫安裝失敗的經(jīng)驗總結(jié)(附pycharm配置anaconda)_py
- 2022-06-10 Asp.Net?Core使用Ocelot結(jié)合Consul實現(xiàn)服務(wù)注冊和發(fā)現(xiàn)_實用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支