在 C++ 中,用 new
运算符分配的动态内存,需要使用 delete
运算符来释放。但是如果这块内存是通过数组形式分配的,使用 delete
只会释放数组的第一个元素,而不会释放整个数组,这可能会导致内存泄漏。
为了释放整个数组,需要在 delete
后加上 []
,表示此处释放的是一个数组,而不是一个单独的变量。示例如下:
int* arr = new int[5];
// 使用 arr
delete[] arr; // 释放整个数组
这样就可以释放整个数组占用的内存。如果不加上 []
,只写 delete arr;
,则只会释放第一个元素所占用的内存空间,并不是整个数组,这就会导致内存泄漏。
需要注意的是,只有使用 new[]
分配的内存需要添加 []
进行释放,使用普通的 new
分配的内存只需要使用 delete
进行释放即可。