new 和 delete 是 C++ 中用于动态分配和释放内存的操作符。它们通常与指针一起使用。
new:new 用于在堆上动态分配内存,并返回指向所分配内存的指针。语法如下:
int* p = new int;
在这个例子中,new int 创建了一个整型变量大小的内存空间,并返回一个指向该内存空间的指针。然后,这个指针被赋值给指针变量 p。
delete:delete 用于释放 new 分配的内存空间,避免内存泄漏。语法如下:
delete p;
在这个例子中,delete p 释放了之前 new 分配的内存空间。注意,使用 delete 后,指针 p 仍然指向之前分配的内存空间,但这块内存已经被释放,访问这块内存可能会导致未定义的行为。
需要注意的是,在使用 new 和 delete 时要遵循以下几点:
使用 new 分配内存后,要使用 delete 来释放该内存,以避免内存泄漏。
不要对未分配内存或已释放内存的指针使用 delete。
不要对使用 new 分配的数组使用 delete,应该使用 delete[]。
例如,如果分配了一个整型数组:
int* arr = new int[5];
// do something with arr
delete[] arr;
这里使用 delete[] 来释放整型数组所占用的内存空间。