C++中为什么有delete[]?

2024-01-04

为什么有一个delete[]?根据我的理解,数组的行为有所不同。然而,为什么它真的存在呢? C中只有free,没有free_array。同样在语法上,两者之间的唯一区别delete var and delete []var is the []它没有参数(我没有告诉数组的长度)。

那么为什么delete[]真的存在吗?我知道有人会说你可以超载delete and delete[](至少我认为这是可能的)但可以说我们没有超载它。它为何存在?


通常,对于非 POD 类,delete[]表达式必须对可变数量的类实例调用析构函数,这些实例在编译时无法确定。编译器通常必须实现一些运行时“魔法”,可用于确定要销毁的对象的正确数量。

A delete表达式不必担心这一点,它只需销毁所提供的指针指向的一个对象即可。正因为如此,它才能有更高效的实施。

通过分手delete and delete[], delete无需正确实施所需的开销即可实施delete[]以及。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中为什么有delete[]? 的相关文章

随机推荐