在 C++ 中,new
是用于 动态内存分配 的关键字,它会在 堆(Heap) 上分配内存,并返回指向该内存的指针。与 C 语言的 malloc()
不同,new
不仅分配内存,还会调用对象的构造函数(对于类类型)。
基本用法
(1) 动态分配单个对象
// 分配一个 int 类型的内存,并初始化为 5
int* p = new int(5);
// 分配一个默认初始化的 int(值未定义)
int* p2 = new int;
// 使用后必须手动释放
delete p;
delete p2;
(2) 动态分配数组
// 分配 10 个 int 的数组
int* arr = new int[10];
// 初始化数组(C++11 起支持)
int* arr2 = new int[5]{1, 2, 3, 4, 5};
// 释放数组时必须加 []
delete[] arr;
delete[] arr2;
(3) 动态分配类对象
class MyClass {
public:
MyClass() { std::cout << "Constructor\n"; }
~MyClass() { std::cout << "Destructor\n"; }
};
MyClass* obj = new MyClass; // 调用构造函数
delete obj; // 调用析构函数