new 和 delete 是C++語言中的兩個運算符,配套使用。
new:用於分配內存,與C語言中的 malloc 相同,分配在堆內存
delete:用於釋放內存,與C語言中的 free 相同,釋放堆內存
new 使用格式:
// 分配時不初始化 類型 *p = new 類型; // 分配時初始化 類型 *p = new 類型(初始值); // 分配數組不初始化 類型 *p = new 類型[長度]; // 分配數組時初始化 類型 *p = new 類型[長度]{值1, 值2, ...};
舉例:
#include <iostream> using namespace std; int main(void) { // 分配時不初始化 int *p0 = new int; *p0 = 10; cout << *p0 << endl; // 分配時初始化 char *p1 = new char('A'); cout << *p1 << endl; // 分配數組不初始化 int *p2 = new int[2]; *p2 = 1; *(p2 + 1) = 2; cout << *p2 << endl; cout << *(p2 + 1) << endl; // 分配數組時初始化 char *p3 = new char[2]{ 'B', 'C' }; for (int i = 0; i < 2; i++) { cout << p3[i] << endl; } return 0; }
執行結果:

delete 使用格式:
// 釋放變量地址空間 delete 變量指針 // 釋放數組 delete []數組指針
舉例:
#include <iostream> using namespace std; int main(void) { int *p0 = new int(10); cout << *p0 << endl; // 釋放變量p0 delete p0; char *p1 = new char[2]{ 'B', 'C' }; for (int i = 0; i < 2; i++) cout << p1[i] << endl; // 釋放數組p1 delete[]p1; return 0; }
