C++ new 和 delete 关键字详解
前言最早接触到new这个关键字是在 Java 中然后 ES6 之后的 js 中也提供了 new 这个关键字在 java 和 js 这两门语言中使用 new 关键词可以实例化类的对象。语义是相似的但是其背后还是有些差异的js 的 new 和 class 可能是一些语法糖。那么有了这些对 new 这个关键字用法的了解我们今天来看一看 c 中提供 new 这个关键字的用途和用法。我们都知道 c 一门效率和性能为先的语言选择 c 来开发应用多数考虑性能才选择这门语言来开发应用程序。 C允许我们在运行时为一个变量或一个数组分配内存。这就是的动态内存分配。在 java 和 js 这样语言中编译器都是内存分配和回收机制开发人员不用为内存管理而花费时间和精力。但是在 c 这门语言这大不一样一切都是程序员自己思考如何分配内存以及在适当时机将其回收。那么今天要聊的new和delete操作符就是用来动态地分配和回收内存。new 和 delete 的使用new1234int* ptr;ptr newint;*ptr 2;cout *ptr endl;这里new动态地获取一块大小为 int 类型大小的内存然后将指向这块内存地址指针返回给ptr这个我们之前定义好的用于存放int类型大小的指针。delete随后我们用delete来释放指针ptr指向的内存。1deleteptr;接下来我们通过 3 个小例子分别介绍如何使用 new 和 delete 为基本类型、组数和对象来动态分配内存以及回收内存1234float* pointFloat;pointFloat newfloat;*pointFloat 2.0f;cout *pointFloat endl;为数组分配内存和释放内存12345678910111213141516intmain(){intnum 5;int* intPointer;intPointer newint[num];for(inti 0; i num; i) {cout level of tut: i 1 : ;cin *(intPointer i);}for(inti 0; i num; i) {cout level of tut i 1 : *(intPointer i) endl;}delete[] intPointer;coutHello World;return0;}使用new为 float 数组动态地分配了内存返回指针是指向内存第一个元素的地址。12345678910111213141516171819classTut{private:intlevel_;public:Tut(intlevel):level_(level){}voidprintLevel(){cout level: level_ endl;}};intmain(){Tut* ptr newTut(2);ptr-printLevel();deleteptr;coutHello World;return0;}注意箭头运算符-,当通过指针访问类成员函数时候会用到-。那么new主要做了什么事情寻找合适大小内存然后将指向内存地址的指针返回给你注意这时new不仅负责分配了Tut大小的内存同时还调用了Tut的构造函数。1void* operatornew(size_tsize)1voidoperatordelete(void*);malloc 和 new有时候我们通常可以用malloc来分配内存不过使用malloc与使用new有一定区别1234567891011classBase{intval_;public:Base() default;Base(intval):val_(val){}voidprint(){cout val_ endl;}};可以使用malloc分配sizeof(Base)Base 类大小内存空间那么new操作符和malloc其实通常都做了找到一块可以存放 Base 类型数据大小内存然后将内存地址返回不同之处new除了作为分配内存的工作之外还调用了一下够着函数。1Base* base newBase();1Base* base (Base*)malloc(sizeof(Base));12Base* base newBase(1);base-print();delete 和 delete[]使用关键字 new 在堆上开辟一块内存用于存放 Base 类型大小的数据因为 c 没有像 Java 那样的垃圾回收机制所以需要手动将这块内存释放。1deletebase;这里值得提一下就是delete和delete[]是 2 个不同的操作符所以我们释放数组时候需要选择delete[]而不是delete。12int* arr_ptr newint[20];delete[] arr_ptr;到此这篇关于 C new 和 delete 关键字详解的文章就介绍到这了

相关新闻

嵌入式烧录失败的五大硬性原因与实操排查指南

嵌入式烧录失败的五大硬性原因与实操排查指南

1. 烧录失败不是玄学,是信号链路上的“断点诊断”烧录芯片总失败——这句话在电子工程师的日常里,几乎和“示波器没波形”“万用表测不准”一样高频。但和那些模糊抱怨不同,“烧录失败”背后其实是一条清晰、可追溯、可验证的物理信号链&…

2026/10/4 18:47:39 阅读更多 →
Webex 自动化实战指南:基于 Rube MCP 与 Composio 的 Cisco Webex 协作工作流自动化(awesome-claude-skills)

Webex 自动化实战指南:基于 Rube MCP 与 Composio 的 Cisco Webex 协作工作流自动化(awesome-claude-skills)

AI 技能AI 插件人工智能工作流自动化 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-skills 点击…

2026/10/4 18:47:39 阅读更多 →
重塑macOS窗口工作流:滑动式平铺窗口管理器Paneru完全入门指南

重塑macOS窗口工作流:滑动式平铺窗口管理器Paneru完全入门指南

重塑macOS窗口工作流:滑动式平铺窗口管理器Paneru完全入门指南 【免费下载链接】paneru A sliding, tiling window manager for MacOS. 项目地址: https://gitcode.com/gh_mirrors/pan/paneru 还在被 macOS 上杂乱堆叠的窗口困扰吗?Paneru 是一款…

2026/10/4 18:47:39 阅读更多 →

最新新闻

Mingbird:面向本地小开源模型完成真实任务的优先本地智能体管控框架

Mingbird:面向本地小开源模型完成真实任务的优先本地智能体管控框架

Mingbird:面向本地小开源模型完成真实任务的优先本地智能体管控框架 arXiv:2610.02001v1,2026‑10‑01 项目仓库:https://github.com/Mingbird/Mingbird‑agent(Apache‑2.0协议) 摘要 2‑9B参数量级的开源小模型已经…

2026/10/4 19:26:27 阅读更多 →
LSCM最小二乘保角映射:原理、C++实现与工程实践

LSCM最小二乘保角映射:原理、C++实现与工程实践

做网格参数化的人,绕不开的一个名字就是LSCM(Least Squares Conformal Maps,最小二乘保角参数化)。我最早接触它是在做纹理映射的时候:把一个三维人头模型展开到二维平面,再用棋盘格纹理贴回去,…

2026/10/4 19:26:27 阅读更多 →
不是所有经验都适合存入模型权重:面向自改进GUI智能体的组件路由框架

不是所有经验都适合存入模型权重:面向自改进GUI智能体的组件路由框架

不是所有经验都适合存入模型权重:面向自改进GUI智能体的组件路由框架arXiv:2610.01787v1,2026‑10‑01摘要 自改进GUI智能体会将自身运行产生的轨迹经验复用,主要存在两种方案:一是对轨迹做微调,将经验写入模型权重&am…

2026/10/4 19:26:27 阅读更多 →
Lovable 无代码 AI 应用实战:用 TaoToken 统一 Key 打通智能体网页生成全流程

Lovable 无代码 AI 应用实战:用 TaoToken 统一 Key 打通智能体网页生成全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 19:26:26 阅读更多 →
DeepSeek一口气开源6个昇腾组件:TileLang、DeepGEMM-Ascend与FlashMLA如何对标CUDA生态

DeepSeek一口气开源6个昇腾组件:TileLang、DeepGEMM-Ascend与FlashMLA如何对标CUDA生态

DeepSeek一口气开源6个昇腾组件:TileLang、DeepGEMM-Ascend与FlashMLA如何对标CUDA生态 9 月 30 日至 10 月 1 日,多个技术资讯渠道集中报道了 DeepSeek 与华为昇腾合作、一次性开源 6 个面向昇腾平台的基础软件组件的消息,组件包括 TileLang…

2026/10/4 19:26:26 阅读更多 →
5 分钟给 Claude/Cursor 接上“实时联网”能力|Bright Data MCP 实测与 TaoToken 统一 Key 配置

5 分钟给 Claude/Cursor 接上“实时联网”能力|Bright Data MCP 实测与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 19:25:26 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →