gpt4 book ai didi

c++ - 如何在编译器级别实现 `delete[] obj` 和 `delete obj`

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:19 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why [] is used in delete ( delete [] ) to free dynamically allocated array?
Why does C++ still have a delete[] AND a delete operator?

我想知道它们有什么区别,我知道一些人可能会说的明显答案,一个是删除一个数组,另一个是删除一个对象,但我想知道为什么要有两种不同的删除方法这两个操作?我的意思是 delete 基本上是使用 C free 方法实现的,它不关心指针实际上是指向数组还是指向单个对象。我能想到的唯一原因是两个能够知道它是否是一个数组并为每个单元格调用析构函数而不是仅为第一个对象调用析构函数但这也不可能因为编译器无法猜测数组的长度只是看它是指针。顺便说一下,虽然据说调用未定义的行为来调用 delete 分配给 new[] 的内存,但我无法想象任何可能出错的地方。

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