C++内存四区
2021/6/9 7:23:55
本文主要是介绍C++内存四区,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
### C++的内存四区 一、.内存分区模型 ``` 1. 代码区 2. 全局区 3. 栈区 4. 堆区 ``` ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/847bf50f4087429a95044d154ee99a45.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/3fd02af3cac98bbfb5328d5431a188ef.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/eeab91ba227fda5549e3cdd6f0c2c6ea.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ``` 代码区:存放函数体的二进制代码,由操作系统进行管理的,存放cpu执行的机器指令 在程序运行前会将我们所写的代码转化成机器可识别的二进制代码放到我们的代码区中,然后生成一个exe的可执行程序。 代码区的两个特点: 代码区是共享的:对于频繁执行的程序,只需要在内存中有一份,不会造成资源浪费。 代码区是只读的:防止程序意外地修改了它的指令。 ``` ----- ``` 全局区:也可以称为静态区,它是存放全局变量、static修饰的静态变量,const修饰的全局变量,以及常量。 特点: 该区域的数据在程序结果之后由操作系统来释放 ``` ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/833c706f30ea5137ec541e65fee2144e.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ----- ``` 栈区:由编译器自动分配释放,存放函数的形参,以及局部变量,const修饰的局部变量。 两点注意事项: 1.永远不要去返回局部变量的地址 2.函数执行完之后由编译器自动释放 ``` ----- ``` 堆区:由程序员分配和释放,若程序员不释放,程序结束时,由操作系统回收。 用new关键字来开辟空间 用delete关键字来释放空间 ``` ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/27862988c352df78f5de9dcc59fa24d5.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![](http://www.www.zyiz.net/i/li/?n=4&i=images/blog/202106/08/00a8b2ce39d35cdb00ba2abcb73efb20.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ### **不同区域存放不同的数据,赋予不同的生命周期。灵活编程**这篇关于C++内存四区的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享