如何在C++中释放动态分配的数组?

Att*_*Kun 1 c++ dynamic-memory-allocation

我知道你必须这样做:

int * p;
p = new int[10];

//use array

delete [] p;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:由于没有明确说明,如何释放正确的内存量?操作系统是否跟踪分配的内存及其起始地址?

Mat*_*del 5

是的,操作系统(或更可能是图书馆)跟踪.

当你分配内存时,操作系统会为你的内存创建一个小标题,这通常就在你分配的内存之前 - 也就是说,在一个稍微低一点的地址上.

释放内存时,它会释放释放的指针,返回几个字节,并检查描述实际分配内容的结构,包括分配的大小.