繁体   English   中英

在C ++中删除数组时释放内存

[英]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 ++中,您可以编写自己的分配器 ,因此如果您愿意, newdelete[]最终可能会与之相连。 如果你看一下如何定义std::allocator ,请注意你没有义务告诉任何人已经分配了什么,也没有任何特定的分配。 分配器在这里有很大的自由度,规范不允许大量的询问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM