贝利信息

c++ new和delete怎么用 c++动态内存管理【详解】

日期:2026-01-05 00:00 / 作者:尼克
C++中new/delete用于手动堆内存管理,new分配并构造对象,delete析构并释放;必须严格配对使用(new对应delete、new[]对应delete[]),否则导致未定义行为;现代C++推荐优先使用智能指针和标准容器替代。

在C++中,newdelete是手动管理堆内存的核心操作符。它们不自动初始化对象、不调用智能指针机制,需要程序员明确配对使用,否则极易引发内存泄漏、重复释放或悬空指针等问题。

new:在堆上分配内存并构造对象

new完成两件事:申请足够大小的未初始化内存,并调用对应类型的构造函数完成初始化。它返回指向该对象的指针,类型与所创建对象严格匹配。

delete:析构对象并释放内存

delete也做两件事:先调用对象的析构函数(如果类型有析构函数),再把内存归还给堆。必须与new严格匹配使用,否则行为未定义。

常见陷阱与关键规则

动态内存管理出错往往不是语法问题,而是逻辑疏忽。以下四条必须牢记:

立即学习“C++免费学习笔记(深入)”;

替代方案:为什么现代C++更推荐智能指针

手动管理new/delete容易出错,而std::unique_ptrstd::shared_ptr能自动绑定生命周期:

掌握newdelete是理解C++内存模型的基础,但在实际项目中,应尽量用标准容器(std::vectorstd::string)和智能指针替代裸动态分配。只有在性能敏感、需精细控制或封装底层资源时,才直接使用它们。