当前位置: 首页 > news >正文

程序内存模型

内存的分区模型

C++程序在执行时,将内存大方向划分为4个区域
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量和静态变量以及常量
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
堆区:由程序员分配和释放,诺程序员不释放,程序结束时由操作系统回收
内存四区意义
不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程

程序运行前

在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域
代码区:
存放CPU执行的机器指令
代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
代码区是只读的,使其只读的原因是防止程序意外地修改了他的指令
全局区:
全局变量和静态变量(static int a = 10 就是普通变量前面加static 属于静态变量)存放在此
全局区还包含了常量区,字符串常量和其他常量(const修饰的全局常量和字符串常量)也存放在此
注意:局部常量不算
该区域的数据在程序结束后由操作系统释放

程序运行后

栈区(Project3 filename)
由编译器自动分配释放,存放函数的参数值 局部变量等
注意事项:不要返回局部变量的地址 栈区开辟的数据由编译器自动释放
int* func() {
int a = 10;
return &a;
}
int main() {
//接受func函数的返回值
int* p = func();
cout << *p << endl;
cout << *p << endl;
system("pause");
return 0;
}
堆区:(project 3 filename1)
由程序员分配释放,诺程序员不释放,程序结束时由操作系统回收
在C++中主要利用new在堆区开辟内存

new运算符

语法:new 数据类型
利用new创建的数据,会返回该数据对应的类型和指针
intfunc(){
int
p=new arr(10);
return a;
}
int p=func();
cout<<
p<<endl;
delete p;//利用delete释放堆区数据
开辟数组
int*arr = new int[10];

http://www.hskmm.com/?act=detail&tid=35801

相关文章:

  • 如何从0到1制作一个免费的二维可视化项大屏
  • 2025 年集成电路封装厂家最新推荐榜:甄选技术领先实力厂家,涵盖制造检测测试领域权威名录
  • 电商app测试常见问题
  • 实用指南:logbuffer 概念及题目
  • 2025年磨粉机厂家权威推荐榜:雷蒙磨粉机/环辊磨粉机/摆式磨粉机/矿石磨粉机/超细磨粉机/高压磨粉机,专业实力与高效生产之选
  • 2025年深度解析推荐:SENO尼古丁口含膜合规版图与全球准入风险全景
  • C# Web开发教程(七)切面编程
  • 2025陶瓷过滤机实力厂家推荐,铜陵杰达机械专注固液分离设备制造
  • 我的第一份开源贡献:小米工程师程赛的社区之旅
  • 2025信息流代运营公司推荐:线尚网络专注效果营销与品牌增长
  • 2025冷链解冻设备厂家推荐广东科恩,专业定制高湿静电解冻方案
  • 基础
  • yorg 到此一游
  • Vue技术之Vxe-Table的虚拟滚动
  • 实用指南:一次借助ChatGPT抵御恶意攻击的经历,为个人服务器添加自动防御系统Fail2ban
  • EasyCVR视频汇聚平台GB28181级联异常排查:上级订阅信息无响应的根源解析
  • SecureCRT 批量创建会话-cnblog
  • 2025干燥设备厂家权威推荐:常州亿干专业定制实验室喷雾与真空耙式干燥机
  • 草稿
  • 2025机电安装厂家推荐:太仓华芃专注工业设备安装,实力厂家可靠之选
  • Docker补充
  • 【QNX】Socket ServerClient 源代码
  • arp 断网小实验
  • 2025 年箱变压器厂家最新推荐榜单:涵盖非晶合金铁心、三相、矿用等多类型设备,助力采购方精准筛选优质合作企业
  • 从“人防”到“智防”:EasyCVR+煤矿AI智能分析一体机重塑矿山安全监管模式
  • 从Java工程师到AI工程师,我花了6个月的转型经验分享
  • 2025 年最新推荐配电柜源头厂家口碑排行榜:聚焦高压智能防爆等多类型产品,精选实力品牌助企业采购高压/智能/抽屉式/照明/防爆配电柜厂家推荐
  • 2025南京鑫铭机械厂家推荐:精密钣金加工与天文台圆顶定制专家
  • 2025年氢氧化镁厂家推荐排行榜,矿石氢氧化镁,水镁石氢氧化镁,阻燃剂氢氧化镁,改性氢氧化镁源头企业实力解析
  • vue控制页面不能复制