关于C++中内存分区的知识

news/2024/4/26 21:30:32/文章来源:https://blog.csdn.net/Superman980527/article/details/128100919

在c++中许多人搞不清楚栈区和堆区的问题,不了解堆区或者栈区内存什么时候释放,经过我的学习,简单给大家讲解下:

C++程序在执行时,将内存大方向划分为4个区域

  • 代码区:存放函数体的二进制代码,由操作系统进行管理的

  • 全局区:存放全局变量和静态变量以及常量

  • 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量

  • 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

所以,只要我们分清楚全局变量和局部变量,就能明白全局区和栈区的区别,

                         分清楚堆区和栈区定义,就能明白堆区和栈区的区别。

一:全局区和栈区的区别:

①函数体外的是全局变量,内存在全局区,函数体内的是局部变量,内存在栈区

②变量前加入static,就都是静态变量,内存在全局区

③const修饰的是常量,但常量分局部常量和全局常量。

④局部变量在函数中,不能返回其本身的地址(因为局部变量储存在栈区上,在这个函数执行完后,会有编译器释放内存,意味着这个地址已经不存在了)

二:堆区和栈区的区别:

①堆区是由程序员自己设置和删除的,主要用的关键字new,利用new来开辟内存空间,创建指针变量,不过指针本质上是局部变量地址在栈区上,保存的数据值放在堆区上。用完之后,要通过关键字delete来释放内存空间。

int* fun()
{int* a = new int(10);return a;
}

(利用new创建一个指针变量,并存放一个数值,这个指针是指向int类型,通过创建指针a来接受这个指针,并返回这个指针对象(因为返回的是指向int类型的指针,所以用int * 进行接受))

这里面所有的指针都是指的是地址,如果想知道里面的数值,需要解引用

int *p = fun();cout << *p << endl;

(上面代码的意思是p是一个指针变量,表示的是地址,利用*p进行解引用,表示的是数值)

如果后续不使用这个指针变量,就利用关键字delete进行释放内存

delete p

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

umask 设置文件权限掩码

我们在创建文件或者目录时&#xff0c;看到的权限往往和我们设置的不一样&#xff0c;原因就在于创建文件时要受到 umask的影响。 目录 一、实际情景介绍 二、文件权限掩码 1、什么是权限掩码&#xff1f; 2、权限掩码的作用过程 3、设置权限掩码的两种方式 (1) umask 命…

【SpringCloud】08 分布式事务 seata

文章目录seata一、seata服务端的搭建&#xff08;1&#xff09;下载seata服务端&#xff08;2&#xff09;解压&#xff08;3&#xff09;配置seata的存储方式&#xff08;4&#xff09;创建seata数据库并导入相关表&#xff08;5&#xff09;把mysql的驱动jar放入到seata服务的…

智能运维应用之道,告别企业数字化转型危机

面临的问题及挑战 数据中心发展历程 2000 年中国数据中心始建&#xff0c;至今已经历以下 3 大阶段。早期&#xff1a;离散型数据中心 IT 因以项目建设为导向&#xff0c;故缺乏规划且无专门运维管理体系&#xff0c;此外&#xff0c;开发建设完的项目均是独立运维维护&#…

产品经理要不要考PMP?进化你能力的阶梯!(附:新版考纲及教材)

产品经理和项目经理看起来是毫不相关的两个专业&#xff0c;那么产品经理要不要考PMP呢&#xff1f;其实是非常有必要的。 以前去面试产品经理&#xff0c;HR只会问1个问题&#xff1a;会用axure吗&#xff1f;一开始对产品经理的定义就是设计产品原型的。能设计产品原型&…

Pytest接口测试框架实战项目搭建(三)

一、前言 前面相当于已经讲完整体框架搭建了&#xff0c;本篇主要讲述在实际业务系统的接口请求中&#xff0c;如何运用好该接口自动化测试框架。 二、步骤演示 1、在conf/api_path.py新增需要测试的接口&#xff0c;标黄底色为新加 存放测试接口仅这一个文件就行&#xff0c…

【DevPress】V2.4.3版本发布,增加内容收录管理

DevPress V2.4.3版本于2022年11月10日发版&#xff0c;增加内容收录模块&#xff0c;方便用户内容收录。 一、该版本功能包含 1、新需求 1&#xff09;控制台增加内容收录管理模块&#xff0c;包括收录内容额度管理、自动收录功能、基于内容搜索做收录以及收录内容列表。 - …

[SWPUCTF 2018]SimplePHP

考点&#xff1a;文件上传 试了一下&#xff0c;直接上传php文件是不行的&#xff0c;.user.ini和.htaccess也不行 能看到有提示&#xff0c;flag在f1ag.php中 在查看文件功能处发现get传参&#xff0c;可能是文件包含 尝试包含当前页面 ?filefile.php 得到 <?php h…

测试大老都是怎么理解cookiesession的?

为什么要学习cookie和session呢&#xff1f;若是没有掌握cookie和session的会话机制&#xff0c;就不了解客户端与服务器之间的交互通信原理&#xff0c;也就定位不了产生bug的原因。 cookie与session他们是如何理解的呢&#xff1f; 1、cookie与session区别&#xff1f; co…

STC 51单片机44——实现0.5秒间隔的单向流水灯

// 12MHz晶振 #include "reg52.h" #include "intrins.h" #define time (65536-50000) // 单次定时50ms unsigned char cn; unsigned char temp; void main(void) { cn10; //10*50ms0.5s temp0x7f; TMOD 0x10; //set tim…

springboot+java+vue大学生求职招聘就业岗位匹配推荐系统

目 使用人职匹配推荐系统分为管理员和用户、企业三个权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、用户管理、企业管理、岗位信息管理、岗位类型管理、应聘信息管理、应聘状况管理、平台费用管理、系统管理等。 用户可以实现&#xff1b;首页、个人中…

GFS分布式

GFS是什么&#xff1f; 1.1 简单介绍 这个问题说大也大&#xff0c;说小也小。GFS是Google File System的缩写&#xff0c;字面意义上就是Google的文件系统&#xff0c;技术层面上来讲&#xff0c;GFS是Google在2003年前后创建的可扩展分布式文件系统 &#xff0c;用来满足 Goo…

【visual studio】visual studio 2022 无法 复制黏贴

visual studio 2022 cannot copy paste 其他网友也有反馈到微软&#xff1a;VS 2022 Copy and Paste form feature Broken?Copy paste still not fixed in Visual studio 2022表现是突然就无法复制和黏贴了其他的app 就没有这个问题每次都是重启电脑解决。 2022年11月fix 今…

2.1 Redis中SDS的定义

每个sds.h/sdshdr 结构表示一个SDS值 struct sdshdr { //记录 buf 数组中已经使用的字节数量 //等于SDS所保存字符串的长度 int len;//记录buf数组中未使用字节的数量 int free;//字节数组,用于保存字符串 char buf[]; };图2-1 展示了一个SDS 示例: 1、free 属性值为0&#x…

【Spring项目中的Controller理解】

目录 1. 添加依赖 2. 关于异常 1. 添加依赖 首先&#xff0c;需要保障此项目中存在spring-boot-starter-web依赖项&#xff0c;否则&#xff0c;当前项目并不具备Web应用程序开发所需的依赖&#xff01; 提示&#xff1a;spring-boot-starter-web是建立在spring-boot-starte…

APS智能排产系统的优势

APS智能排产系统是通过同步考虑多种有限能力资源的约束&#xff0c;依据各种预设规则&#xff0c;针对解决&#xff1a;客户订单交期评估与答复、人工排产效率低、设备资源利用率低、物料计划与生产计划脱节、生产计划执行率低、库存积压与生产缺料等相关问题&#xff0c;依靠严…

安科瑞智能余压监控系统余压控制器ARPM-C 监控余压值/接收报警信息

1、概述 ARPM-C型余压控制器&#xff0c;可监控所连接余压探测器的余压值&#xff0c;接收余压探测器的报警信息&#xff0c;并向余压监控器反馈现场工作状态&#xff0c;当余压过高报警时联动风阀执行器调节泄压阀&#xff0c;能够持续调节泄压阀的开启角度。 2、产品型号 …

5G无线技术基础自学系列 | MIMO功能

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线通信的迅速发展对系统的容量和频谱…

Linux学习笔记(二)

命令 目录中找文件&#xff1a;find压缩tar&#xff1a;tar -cvf xxx.tar 文件解压缩tar&#xff1a;tar -xvf xxx.tar解压缩.gz文件&#xff1a;tar -zxvf xxx.tar.gz压缩.bz2文件&#xff1a;tar -jcvf xxx.tar.bz2解压到指定目录&#xff1a;tar -C 指定目录压缩zip&#xf…

Ensp用windows回环口连接cloud配置

Ensp模拟通过本机&#xff08;windows&#xff09;用python脚本批量配置华为数通设备时&#xff0c;为了避免对内网资源的浪费最好用回环口&#xff08;loopback&#xff09;。 一、windows开启loopback虚拟接口 概要&#xff1a; right click on window start menu icon an…

进阶自动化测试,你一定要知道的...

自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或系统&#xff0c;预设条件包括正常和异常&#xff0c;最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试框架一般可以分为两个层次&#xff0c;上层是管理整个自动化测试的开发&a…