pau*_*ago 18 c++ arrays pointers new-operator
我对如何创建动态定义的数组感到困惑:
int *array = new int[n];
Run Code Online (Sandbox Code Playgroud)
我不知道这是做什么的.我可以告诉它创建一个指向数组的指针指向一个新的对象/数组int?有人会关心解释吗?
ANi*_*sus 20
new分配存储您请求的对象/数组所需的内存量.在这种情况下n个int.
然后指针将地址存储到该内存块.
但是要小心,这个分配的内存块在你通过编写告诉它之前不会被释放
delete [] array;
Run Code Online (Sandbox Code Playgroud)
int *array = new int[n];
Run Code Online (Sandbox Code Playgroud)
它声明了一个指向类型int和大小的动态数组的指针n.
更详细的答案:new分配大小等于sizeof(int) * n字节的内存并返回由变量存储的内存array.此外,由于内存是使用动态分配的new,因此您需要通过编写手动解除分配(当然,当您不再需要时):
delete []array;
Run Code Online (Sandbox Code Playgroud)
否则,您的程序将泄漏至少sizeof(int) * n字节的内存(可能更多,具体取决于实现使用的分配策略).
该声明基本上做了以下事情: