C++内存分区模式

news2025/1/21 15:41:32

内存分区模型

  1. 代码区:存放函数体的二进制代码,由操作系统管理的
  2. 全局区:存放全局变量和静态变量以及常量
  3. 栈区:由编辑器自动分配释放,存放函数的参数值,局部变量等
  4. 堆区:由程序员分配和释放,如程序员不释放,程序结束时由操作系统自动回收。

不同的区域生命周期不同,方便程序员进行编程

程序运行前

在编译后生成exe可执行程序,未执行前的程序分为两个区域

代码区

  存放CPU执行的机器指令(二进制)
  代码区是**共享**的。共享的目的是对于频繁执行的程序只需要一份代码即可
  代码区是**只读**的,防止程序意外被修改

全局区

  全局变量和静态变量存放的地方
  全局区还包含了常量区,字符串常量和其他常量
  该区域的数据在执行程序以后由操作系统释放

image.png
C++中在程序运行前分为全局区和代码区
优码区特点是共亨和只读
全局区中存放全局变量、静态变是、常量
常量区中存放 const修饰的全局常量 和字符串常量

栈区

由编译器自动分配释放,存放函数的参数值局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

#include <iostream>
#include <string>
using namespace std;
int* func(){
	int a=10;
	return &a;
}
int main(){
    int * p=func();
    cout<<*p<<endl;//自动释放
    cout<<*p<<endl;
    return 0;
}
//输出10和0

堆区

由程序员分配和释放,如程序员不释放,程序结束时由操作系统自动回收。
在c++中主要利用new在堆区开辟数据

#include <iostream>
#include <string>
using namespace std;
void func(){
        //利用new关键字,可以将数据开辟到堆区
        //指针本质也是局部变量,保存到堆区
        //这里new开辟堆区新空间为:0x001,new返回的是该类型的指针,那么int *p栈区里面的值为0x001
	int * p=new int(10);
	return p;
}
int main(){
    int * p=func();
    cout<<*p<<endl;
    //一旦删除就失去改地址0x001的访问权限,再次操作就会出现报错
    delete p;
    //删除数组delete[] arr;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作记录】pytorch_geometric安装方法

pytorch_geometric安装方法 github地址 主要不要直接pip install安装&#xff0c;会由于依赖无法安装而失败 点击here手动安装依赖 选择对应的pytorch版本&#xff0c;我的是Win10 Python3.8.3Pytorch1.8.1CUDA10.2 手动下载四个依赖包本地安装&#xff1a; 主要不要直接&am…

高效高精分板的关键驱动装置:PCB分板机切割主轴

随着电子制造业的快速发展&#xff0c;分板机成为了一种必不可少的生产设备&#xff0c;PCB分板机切割主轴作为关键驱动装置&#xff0c;扮演着重要的角色。 PCB分板机切割主轴由电机、轴承、传动系统和控制系统等组成。电机产生的动力通过传动系统传递给主轴&#xff0c;主轴…

项目经理常用工具01

主要工具 表达工具—SCRTV方法 情境 Scene&#xff1a;明确问题&#xff1a;是什么&#xff1f;冲突 Confilict&#xff1a;提出疑问&#xff1a;怎么了?原因 Reason&#xff1a;分析原因&#xff1a;为什么&#xff1f;策略 Tactics&#xff1a;进行决策&#xff1a;怎么办…

运用Python解析HTML页面获取资料

在网络爬虫的应用中&#xff0c;我们经常需要从HTML页面中提取图片、音频和文字资源。本文将介绍如何使用Python的requests库和BeautifulSoup解析HTML页面&#xff0c;获取这些资源。 一、环境准备 首先&#xff0c;确保您已经安装了Python环境。接下来&#xff0c;我们需要安…

李宏毅 2022机器学习 HW2 上分路线

baseline增加concat_nframes &#xff08;提升明显&#xff09;增加batchnormalization 和 dropout增加hidden layer宽度至512 &#xff08;提升明显&#xff09; 提交文件命名规则为 prediction_{concat_nframes}[{n_hidden_layers}{dropout}_bn].csv

【Ubuntu】Ubuntu常用软件部署

1.安装jdk1.8 (1).apt方式安装 1).安装 1.在终端中输入以下命令&#xff0c;以更新软件包列表 sudo apt-get update2.在终端中输入以下命令&#xff0c;以安装JDK 1.8 sudo apt-get install openjdk-8-jdk3.将Java 1.8设置为默认版本。在终端中输入以下命令 sudo update-…

忘记密码-小米机型 其他安卓机型账号锁 设备锁的分析与刷写某第三方解锁包输入“注册码”

重要提示&#xff1a; 博文的主要目的是分析安卓机型账号锁的安全性和解决方法。操作仅限于自己的机型忘记密码 手机号不用过了保修期导致无法通过官方解锁的操作&#xff0c;请勿用于非法途径 在开始前。对于锁的认知可以参考这篇博文 安卓搞机玩机-什么是“锁 ” BL锁 屏幕锁…

基于ssm的大型商场会员管理系统源码和论文

基于ssm的大型商场会员管理系统源码和论文084 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管…

JavaWeb之一直摆,一直赶

注解&#xff1a; 注解如果设置了参数的话最后设置默认值&#xff0c;不然容易报错&#xff0c;而且在设置默认值的时候&#xff1a; 自定义注解&#xff1a; 元注解: 对其他注解做出注解 常用元注解&#xff1a; Target:用于描述注解的使用范围&#xff1a; //比如这样一个…

checkstyle检查Java编程样式:识别应该被定义为final的类

介绍 总体说明 checkstyle可以使用FinalClass检查应该被定为final的类。如果违反了&#xff0c;就会报违反项&#xff1a; https://checkstyle.sourceforge.io/checks/design/finalclass.html checkstyle规则集文件对FinalClass模块的配置&#xff1a; 哪些类可以被定义fi…

Linux系统运维指南

实验linux操作系统版本为&#xff1a;CentOS-7.6-x86_64-DVD-1810.iso 注意&#xff1a;此文档为讨论性材料&#xff0c;均为个人实验截图及网络收集资源&#xff0c;非终版。 建议安装操作系统的磁盘与存放数据的磁盘分开 系统盘本次配置&#xff1a;50G 生产推荐&…

【校招VIP】校招考点之前端安全和注入

考点介绍&#xff1a; 随着前端的快速发展&#xff0c;各种技术不断更新&#xff0c;前端的安全问题也越来越值得我们重视。千万不要等到项目上线之后才去重视安全问题&#xff0c;到时候被黑客攻击一切都太晚了。今天的专题将讲述前端几大常见安全问题&#xff0c;在校招面试中…

双基证券:预计未来还会有更多政策来吸引增量资金

双基证券表明&#xff0c;8月27日&#xff0c;活泼资本商场五大方针出台&#xff1a;证券买卖印花税折半征收&#xff1b;阶段性收紧IPO节奏&#xff1b;上市房企再融资不受破发、破净和亏损限制&#xff1b;规范控股股东与实践操控人减持行为&#xff1b;融资保证金最低份额由…

MySQL 的隐式转换导致诡异现象的案例一则

正是因为 MySQL 对字符串进行隐式转换时会截断再转&#xff0c;而不是像 Oracle、SQL Server 这些数据库针对这种问题直接报错&#xff0c;所以才出现了这个诡异的问题。 作者&#xff1a;刘晨 网名 bisal &#xff0c;具有十年以上的应用运维工作经验&#xff0c;目前主要从事…

四---降压型开关稳压器

当开关开通时&#xff0c;电流是斜线上升&#xff1b; 开关关断时&#xff0c;电感、负载、二极管、形成自然的续流回路&#xff0c;电流开始线性减少&#xff1b; 类似当蓄水池的水降低到一定程度&#xff0c;开关会重新打开&#xff0c;通过这样的高频开关操作&#xff0c;就…

财务部发布《企业数据资源相关会计处理暂行规定》

导读 财务部为规范企业数据资源相关会计处理&#xff0c;强化相关会计信息披露&#xff0c;根据《中华人民共和国会计法》和相关企业会计准则&#xff0c;制定了《企业数据资源相关会计处理暂行规定》。 加gzh“大数据食铁兽”&#xff0c;回复“20230828”获取材料完整版 来…

【Terraform学习】使用 Terraform创建Lambda函数启动EC2(Terraform-AWS最佳实战学习)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》

医院里面常见的叫号系统怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第…

vue2中使用wangEditor(JS引入)

本文讲的不是npm安装&#xff0c;是下载js本地引入哦~ 想了解vue2和vue3的npm安装的&#xff0c;去这里&#xff1a;用于 Vue React | wangEditor 为了防止内网无法使用&#xff0c;咱不用cdn引入&#xff0c;直接下载js放入本地使用。 第一步&#xff1a;下载wangEditor对应…

使用Python构建网络爬虫:提取网页内容和图片资源

网络爬虫是一种自动获取网页内容的程序&#xff0c;它可以帮助我们高效地收集网络上的有价值信息。本文将介绍如何使用Python构建网络爬虫&#xff0c;提取网页内容和图片资源。   一、环境准备   1.安装Python环境   首先&#xff0c;确保您已经安装了Python环境。访问P…