简述:内存分区模型概述:
C++程序在执⾏时,将内存⼤⽅向划分为4个区域
代码区:存放函数体的⼆进制代码,由操作系统进⾏管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器⾃动分配释放, 存放函数的参数值,局部变量等
字符串常量存放在哪个内存区域堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:
不同区域存放的数据,赋予不同的⽣命周期, 给我们更⼤的灵活编程
程序运⾏前:
在程序编译后,⽣成了exe可执⾏程序,未执⾏该程序前分为两个区域
代码区:
存放 CPU 执⾏的机器指令
代码区是共享的,共享的⽬的是对于频繁被执⾏的程序,只需要在内存中有⼀份代码即可
代码区是只读的,使其只读的原因是防⽌程序意外地修改了它的指令
全局区:
全局变量和静态变量存放在此.
全局区还包含了常量区, 字符串常量和其他常量也存放在此.
==该区域的数据在程序结束后由操作系统释放==.
程序运⾏后:
栈区:
由编译器⾃动分配释放, 存放函数的参数值,局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器⾃动释放
堆区:
由程序员分配释放,若程序员不释放,程序结束时由操作系统回收
在C++中主要利⽤new在堆区开辟内存(new的使⽤请另外查看)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论