c++基础知识-程序内存模型
一、程序内存模型
根据运行前与运行后,一共分为四大区域:
1.程序运行前:代码区、全局区;
2.程序运行后:栈区、堆区;
二、代码区
程序运行前写的所有代码,最后全部转换成二进制录入电脑
三、全局区
包括:
全局变量:写在函数体之外的变量;
静态变量:在普通变量前加关键字static;
常量:字符串常量与const修饰的全局变量;
四、栈区
局部变量、形参;该区域数据是由编译器管理开辟和释放。
注:不要返回局部变量地址!
五、堆区
由程序员分配释放,程序结束时由系统回收。
利用new关键字,可将数据开辟到堆区,即地址不会被自动释放。
可利用关键字delete释放数据。
1 //new基本语法 2 int* func() 3 { 4 int * p=new int(10); //new返回是该数据类型指针 5 return p; 6 } 7 //堆区开辟数组 8 void test01() 9 { 10 //创建10整型数据的数据在堆区 11 int* arr = new int[10]; //10代表数组有10个元素 12 for (int i = 0; i < 10; i++) 13 { 14 arr[i] = i + 100; 15 } 16 for (int i = 0; i < 10; i++) 17 { 18 cout << arr[i] << endl; 19 } 20 //释放堆区数组:加中括号 21 delete[] arr; 22 } 23 24 int main() 25 { 26 int* m = func(); 27 cout << *m << endl; //堆区数据不会自动释放 28 //用关键字delete释放 29 delete m; 30 test01(); 31 32 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律