delete [] 在 O(N) 时间内运行吗?

TTT*_*TTT 3 c++ memory language-lawyer

当您使用 解除分配数组时delete [] name,这是否需要通过遍历数组并删除其中的所有内容来花费 O(N) 时间,还是仅删除数组本身?

Col*_*lin 6

要看。

如果存储在 中的类型有一个析构函数name,那么是的,每个析构函数都被运行,然后内存被释放。假设析构函数在 O(1) 时间内运行,这将是一个 O(N) 过程。

如果它是没有析构函数的类型(例如原始类型),则内存将被释放(大概在 O(1) 时间内,尽管我没有看到任何与此相关的标准保证)。

  • @eerorika它仍然会随着数组中被破坏的元素数量线性缩放 (3认同)