[英]Deallocating memory while deleting an array in C++
在C ++中,当我们分配一个数组时,无法在初始化数据后找出数组的大小。 那么当我尝试在程序结束时释放内存时,删除操作符如何知道要删除的内存量。
int main()
{
int* p = new int[10];
int* q = new int[30];
//... bunch of code
//...
// ... bunch of code
delete[] p;
delete[] q;
return 0;
}
new
运算符最终在堆上创建一个条目,堆分配器知道如何解除分配之前分配的内容。 这些信息通常不适用于您的代码,因为它是您不应该混淆的所有C ++内部。
所以基本上堆元数据描述了这种分配。
请记住,在C ++中,您可以编写自己的分配器 ,因此如果您愿意, new
和delete[]
最终可能会与之相连。 如果你看一下如何定义std::allocator
,请注意你没有义务告诉任何人已经分配了什么,也没有任何特定的分配。 分配器在这里有很大的自由度,规范不允许大量的询问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.