可能重复:
How does delete[] “know” the size of the operand array?
How does the delete in C++ know how many memory locations to deletedelete []如何跟踪元素的数量?
我知道这是一个很简单的问题,但我一不知道的差异(如果有的话),这个线之间:
double * a = new double[100];
delete[] a;
delete a;
free ((void*)a);
首先,将所有这些电话(每个都没有使用ers)以相同的方式工作并且免费sizeof(double)* 100字节? 这导致我第二个问题,程序如何跟踪分配内存的大小?例如,如果我发送我的a
指针到一个函数,然后delete[]
这个指针从我的函数中,我是否也会释放相同数量的内存?
感谢
但是这并没有回答的问题是如何'删除[]'跟踪元素的数量。 –
@NathanFellman:是的,但我认为这是在充分[链接复制](解决http://stackoverflow.com/questions/197675/how-does-delete-know-the-size-of-the-operand-数组)。这里真的有两个问题 - 我回答了一个,而另一个回答了另一个问题。 –
@NathanFellman:编辑。 –