为什么有一个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(使用前将#替换为@)