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

初学C/C++内存管理--new和delete的使用

一,内存分布

栈区

一般的局部变量和函数的返回数据以及返回地址,函数的参数都在战栈区上开辟空间。栈区开空间一般由编译器自动管理,出了生命周期自动释放。也可以通过一些方式自己手动开辟栈区空间,不过一般用不到。

关于栈区空间开辟和释放空间的具体过程,可以了解一下以下文章:

C语言的函数栈帧(动画展示详细过程)_南山忆874的博客-CSDN博客

堆区:

一般由程序员自己开辟和管理,存放一些程序运行时的变量,主要通过malloc/new  free()/delete的方式进行(下面详谈),如果程序未释放堆内容,程序结束时操作系统会自动回收(最好不要这样)。

全局区(静态区):

一般存放全局变量和被static修饰的静态变量,由系统自动管理和释放。全局区分为已初始化全局区和未初始化全局区

常量区:

存放字符串常量,只有读权限,没有写权限,后由系统自动管理和释放

代码区:
存放函数体(类成员函数、静态函数和全局函数,静态成员函数)的二进制代码。

配图:

 

二,malloc/new  free()/delete的区别

在C语言中我们使用malloc和free来管理开辟空间,在C++中有自己的一套内存管理体系new和delete。

注意!!虽然C++是向下兼容C的,但是使用内存管理的时候,最好不要混用上面两者,可能会导致内存泄漏。

使用malloc就使用free释放,使用new就使用delete释放,当我们想要使用new开出多个空间时,就要使用delete[] 释放。

#include <iostream>
using namespace std;int main()
{int* n = new int;int* m = (int*)malloc(sizeof(int));int* a = new int[4];//4个intdelete n;//delete m; ×//free(n); ×free(m);delete[] a;//加[]return 0;
}

值得一提的是,new和delete以及delete[]的底层其实也是调用的malloc和free,只不过C++在具体的细节上又对其进行了封装,时的C++自成一套内存管理体系,malloc和free是函数,而new和delete是关键字。

相关文章:

初学C/C++内存管理--new和delete的使用

一&#xff0c;内存分布 栈区&#xff1a; 一般的局部变量和函数的返回数据以及返回地址&#xff0c;函数的参数都在战栈区上开辟空间。栈区开空间一般由编译器自动管理&#xff0c;出了生命周期自动释放。也可以通过一些方式自己手动开辟栈区空间&#xff0c;不过一般用不到…...

【Java】volatile

一、volatile volatile是Java虚拟机提供的轻量级的同步机制&#xff0c;它有&#xff13;个特性&#xff1a; &#xff11;&#xff09;保证可见性 &#xff12;&#xff09;不保证原子性 &#xff13;&#xff09;禁止指令重排 当写一个volatile变量时&#xff0c;JMM会把该…...

混沌工程 Chaos Mesh 实践经验(持续更新)

使用 k8s JVM故障 Linux内核版本 Linux 系统内核必须为 4.1 及以上版本。 不然会一直失败&#xff0c;可以从Chaos Mesh dashboard前端看到。 对native方法注入故障无效 实测对Thread.sleep(Long) 注入故障无效&#xff0c;猜测是因为对native方法无效&#xff0c;大概因为…...

追梦之旅【数据结构篇】——详解C语言实现链栈

详解C语言实现链栈~&#x1f60e;前言&#x1f64c;整体实现内容分析&#x1f49e;1.头文件编码实现&#x1f64c;2.功能文件编码实现&#x1f64c;3.测试函数功能代码&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右…...

oracle数据库常用操作

1.连接登录切换用户su - oracle以管理员模式登录到sqlplus&#xff1a;sqlplus / as sysdba oracle登录身份有三种&#xff1a;1.1Normal 普通身份&#xff1b;1.2.sysdba 系统管理员身份&#xff1b;若以 ‘sysdba’ 方式认证&#xff0c;登录用户为 ‘SYS’&#xff0c;为 Or…...

一文教会你如何在Linux系统中使用Docker安装Redis 、以及如何使用可视化工具连接【详细过程+图解】

文章目录1、安装redis2、在外部创建配置文件3、创建redis4、启动测试redis5、数据持久化存储6、使用可视化工具连接redis前言在windows上安装过reids、在linux上也安装过redis&#xff0c;但是都没有docker上安装redis方便。这里给出docer安装redis的相关教程1、安装redis 默认…...

mysql 内存架构

1. 背景 从 innodb 的整体架构中可以知道 innodb 的内存架构中分为 buffer pool 缓存区, change pool 修改缓冲区, adaptive hash index 自适应哈希索引, 和 log buffer 日志缓冲区. 2. buffer pool buffer pool 是用于缓冲磁盘页的数据&#xff0c;mysql 的80%的内存会分配给…...

Helm安装Harbor

一、介绍 1.1 Harbor Harbor 是由 VMware 公司为企业用户设计的 Registry Server 开源项目&#xff0c;包括了权限管理 (RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能&#xff0c;同时针对中国用户的特点&#xff0c;设计镜像复制和中文支持等功能。目前该项…...

梯度下降优化器:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam -> AdamW

目录 1 前言 2 梯度概念 3 一般梯度下降法 4 BGD 5 SGD 6 MBGD 7 Momentum 8 SGDM&#xff08;SGD with momentum&#xff09; 9 NAG(Nesterov Accelerated Gradient) 10 AdaGrad 11 RMSProp 12 Adadelta 13 Adam 13 Nadam 14 AdamW 15 Lion&#xff08;EvoLve…...

Ubuntu下gcc多版本管理

Ubuntu下多gcc版本的管理 开发过程中&#xff0c;在编译一个开源项目时&#xff0c;由于代码使用的c版本过高&#xff0c;而系统内置的gcc版本过低时&#xff0c;这个时候我们就需要升级gcc版本&#xff0c;但是为了避免兼容性问题&#xff0c;安装多个版本的gcc&#xff0c;然…...

吃透8图1模板,人人可以做架构

前言 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;很多小伙伴问尼恩&#xff1a; 大佬&#xff0c;我们写架构方案&#xff0c; 需要从哪些方面展开 大佬&#xff0c;我们写总体设计方案需要一些技术亮点&#xff0c;可否发一些给我参考下 诸如此类&#xff0c;问法很多…...

骨传导耳机推荐哪款好,列举几款是市面上热销的骨传导耳机

​骨传导耳机是一种新型的耳机类型&#xff0c;通过震动和声音将振动传到了耳道外&#xff0c;对耳道不会产生损伤&#xff0c;能够保护听力。相比于传统耳机的优势有很多&#xff0c;比如运动时佩戴更加稳固&#xff0c;也可以在听歌时与人交谈。但在市面上的骨传导耳机款式可…...

CFS三层内网渗透

目录 环境搭建 拿ubuntu主机 信息收集 thinkphp漏洞利用 上线msf 添加路由建立socks代理 bagecms漏洞利用 拿下centos主机 msf上线centos 添加路由&#xff0c;建立socks代理 拿下win7主机 环境搭建 设置三块虚拟网卡 开启虚拟机验证&#xff0c;确保所处网段正确&a…...

SQL server设置用户只能访问特定数据库、访问特定表或视图

在实际业务场景我们可能需要开放单独用户给第三方使用&#xff0c;并且不想让第三方看到与业务不相关的表或视图&#xff0c;我们需要在数据库中设置一切权限来实现此功能&#xff1a; 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认…...

linux:http服务器搭建及实验案例

目录准备工作http服务器各个配置文件大概说明实验1&#xff1a;访问不同ip获得不同网页实验2&#xff1a;同一ip访问不同端口获得不同网页准备工作 1&#xff0c;安装http服务 2&#xff0c;将 /etc/selinux/config 文件下面的 SELINUX值改为 disabled 或者 permissive 。 3&a…...

【无标题】智能工业安全用电监测与智慧能源解决方案

工业互联网已成为全球制造业发展的新趋势。在新基建的推动下&#xff0c;5G、人工智能、云计算等技术与传统工业深度融合&#xff0c;为实现智能制造提供了技术支撑&#xff0c;将有力促进制造强国早日实现。 十四五规划在新基建的基础上进一步加快了制造业转型升级的步伐&…...

前端白屏的检测方案,让你知道自己的页面白了

前言 页面白屏&#xff0c;绝对是让前端开发者最为胆寒的事情&#xff0c;特别是随着 SPA 项目的盛行&#xff0c;前端白屏的情况变得更为复杂且棘手起来&#xff08; 这里的白屏是指页面一直处于白屏状态 &#xff09; 要是能检测到页面白屏就太棒了&#xff0c;开发者谁都不…...

编译原理【文法设计】—每个a后面至少一个b、ab个数相等,ab个数不相等的所有串

编译原理【文法设计】—设计每个a后面至少一个b、ab个数相等&#xff0c;ab个数不相等的文法为字母表Σ{a,b}Σ\{a,b\}Σ{a,b}上的下列每个语言设计一个文法 (a) 每个a后面至少有一个b的所有串 首先&#xff0c;每个a后面至少有一个b的正规式怎么写呢&#xff1f;每个a都需要…...

【死磕数据库专栏启动】在CentOS7中安装 MySQL5.7版本实战

文章目录前言实验环境一. 安装MySQL1.1 配置yum源1.2 安装之前的环境检查1.3 下载MySQL的包1.4 开始使用yum安装1.5 启动并测试二. 设置新密码并重新启动2.1 设置新密码2.2 重新登录测试总结前言 学习MySQL是一件比较枯燥的事情&#xff0c;学习开始之前要先安装MySQL数据库&a…...

23.2.23 22湖北省赛 B

好久没打卡了, 随便找的个水题写 这题是简单难度的 ab1 所以可以找到固定规律, 通过手动模拟可以发现 假设两种水叫做a水和b水 先倒入a水 1:0 倒入b水 1:1 此时水杯为 倒出一半的混合物, 因为ab水互溶, 比例不变 再加入a水或者b水将容器填满 比例现在变为 3:1 混合之后再…...

DLSS Swapper终极指南:免费开源的DLSS文件智能管理工具

DLSS Swapper终极指南&#xff1a;免费开源的DLSS文件智能管理工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经遇到过这样的困扰&#xff1a;你心爱的游戏明明支持DLSS技术&#xff0c;但游戏自带的DLSS…...

用for循环语句求和

‌Matlab里面的循环结构语句主要有for循环语句和while循环语句两种形式&#xff0c;这篇博文学习for循环语句。for循环语句一般用于循环次数已经确定的情况&#xff0c;格式为for 循环变量起始值&#xff1a;步长&#xff1a;终止值循环体end循环变量从起始值开始计数&#xff…...

ML/MM混合方法在药物结合自由能计算中的基准评估与实战指南

1. 项目概述与核心挑战在计算机辅助药物设计的核心战场上&#xff0c;预测一个候选药物分子&#xff08;配体&#xff09;与靶点蛋白结合的紧密程度——即结合自由能&#xff0c;是决定项目成败的关键。这个数值直接关联到药物的效力和选择性&#xff0c;传统上需要通过耗时耗力…...

Dingo-BNS:基于神经后验估计的亚秒级引力波参数推断框架

1. 项目概述&#xff1a;当引力波遇见神经网络引力波天文学正处在一个激动人心的时代。自2015年首次直接探测到引力波以来&#xff0c;我们不仅“听”到了黑洞并合的宇宙巨响&#xff0c;也捕捉到了双中子星并合产生的时空涟漪&#xff0c;开启了多信使天文学的新纪元。然而&am…...

除了Easy App Locker,还有哪些Mac应用加锁方案?横向对比与避坑指南

Mac应用加锁全方案评测&#xff1a;从系统原生到第三方工具的深度选择指南当你把Mac借给同事调试代码时&#xff0c;是否担心他们无意间看到你的通讯录或邮件&#xff1f;又或者家里的小朋友总想偷偷打开你的游戏客户端&#xff1f;应用加锁早已超越简单的隐私保护&#xff0c;…...

# 软考软件设计师 · 考前2天轻松复习与终极必背手册

软考软件设计师 考前2天轻松复习与终极必背手册&#x1f4c5; 2026年5月21日 | 距考试仅剩2天 | D-2 轻松复习日 ⚠️ 今天的核心任务&#xff1a;翻看错题本 快速过一遍速记口诀 确认考场路线 心态放松 ❌ 不要学新内容&#xff01;不要做难题&#xff01;今天的任务只有一…...

Hexo 排坑记:删除所有文章后首页无法访问(Cannot GET)

背景 最近在使用 Hexo Butterfly 主题搭建个人博客时&#xff0c;遇到一个奇怪的问题&#xff1a;我把 source/_posts 下的所有文章都删掉后&#xff0c;重新生成并启动本地服务器&#xff0c;访问 http://localhost:4000 竟然直接显示 Cannot GET /&#xff0c;首页完全打不开…...

Python数据库设计模式:从ORM到数据层架构

Python数据库设计模式&#xff1a;从ORM到数据层架构 引言 数据库设计是后端开发的核心环节。作为从Python转向Rust的后端开发者&#xff0c;我发现Python的数据库生态非常成熟&#xff0c;尤其是SQLAlchemy提供了强大的ORM能力。本文将深入探讨Python数据库设计模式&#xff0…...

AI Agent Harness Engineering 在房地产中的应用:智能推荐与价值评估

AI Agent Harness Engineering 在房地产中的应用:智能推荐与价值评估 引言:房地产数字化转型的「最后一公里」——智能决策的人机协同闭环 痛点引入:千亿级赛道下的三大决策「卡脖子」难题 房地产作为全球规模最大的实体产业之一(据CBRE世邦魏理仕2024年全球房地产市场报…...

书匠策AI降重降AIGC实测:论文圈的“消音器“到底有多猛?官网www.shujiangce.com深度拆解

各位还在论文泥潭里挣扎的宝子们&#xff0c;今天这期内容可能会让你少熬三个通宵。 我最近收到最多的私信就是&#xff1a;"博主&#xff0c;我查重42%&#xff0c;AIGC检测28%&#xff0c;导师说再改不过就延毕&#xff0c;怎么办&#xff1f;"说实话&#xff0c;…...