我无法理解此代码的末尾(array = 0;
):删除动态分配的变量设定指针为0
#include <iostream>
int main()
{
std::cout << "Enter a positive integer: ";
int length;
std::cin >> length;
int *array = new int[length];
std::cout << "I just allocated an array of integers of length " << length << '\n';
array[0] = 5; // set element 0 to value 5
delete[] array; // use array delete to deallocate array
array = 0; // use nullptr instead of 0 in C++11
return 0;
}
在结束时,动态分配的数组被删除(返回到OS),然后分配值为0.
为什么这样做?数组返回到操作系统后,没有必要为它赋值0,对吧?从
代码:http://www.learncpp.com/cpp-tutorial/6-9a-dynamically-allocating-arrays/
它设置一个有效的(但为空)指向数组的指针,以避免有悬挂指针。所以稍后,我们可以在使用之前测试'array'。如果指针不再使用,则确实不需要。 – Jarod42
int *数组作为一个指针,即使解除了对象的分配,仍然保留它指向的地址的信息。由于该空间不再属于该指针,因此将其设置为0,以便您不能访问某些随机数据。 – metamorphling
使用'std :: vector'可以避免那些手动的内存管理。 – Jarod42