gpt4 book ai didi

c++ - C++的delete和delete[]中的逻辑

转载 作者:行者123 更新时间:2023-11-28 02:56:47 24 4
gpt4 key购买 nike

<分区>

在C语言中,free()用于释放内存,比如free(ptr)。据我了解,在库代码中的 ptr 之前分配了额外的内存来存储 block 大小信息。 free()被调用后,整个 block 被跟踪然后释放。

在C++中,有new和delete两种形式。一个是数组。如果使用 new[],则应使用 delete[]。例如,

int ptr = new [10]; 
delete [] ptr;

问题1:我可以在这里使用delete ptr吗?如果没问题,delete ptr + 2 会怎么样?

问题2:如果必须用delete[]来匹配new[],为什么需要两种形式的delete?只需一种形式,比如说 delete,就足够了。

谢谢大家的建议!

感谢 Mgetz。问题2应该是:为什么c++标准同时提出delete []和delete if在任何情况下都只有一个正确的形式?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com