C++内存四区

### C++的内存四区 一、.内存分区模型 ``` 1. 代码区 2. 全局区 3. 栈区 4. 堆区 ``` ![](http://www.icode9.com/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.icode9.com/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.icode9.com/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.icode9.com/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.icode9.com/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.icode9.com/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++中的引用


下一篇:LeetCode——516. 最长回文子序列(Java)