【发布时间】:2012-05-11 19:47:15
【问题描述】:
可能重复:
How does delete[] “know” the size of the operand array?
How does the delete in C++ know how many memory locations to delete
我知道这是一个相当简单的问题,但我不确定这两行之间的区别(如果有的话):
double * a = new double[100];
delete[] a;
delete a;
free ((void*)a);
首先,所有这些调用(在没有其他调用的情况下使用每个调用)都会以相同的方式工作并释放 sizeof(double)*100 字节吗?
这让我想到了第二个问题,程序如何跟踪分配的内存大小?例如,如果我将我的 a 指针发送到一个函数,然后从我的函数中发送 delete[] 这个指针,我是否也会释放相同数量的内存?
谢谢
【问题讨论】:
标签: c++ memory-management