[C ++新增/删除标准保证了复杂性

问题描述 投票:1回答:1

最近的c ++标准中是否有保证内存分配操作的复杂性?也就是说,如果我有一个类A,其默认构造函数和析构函数在O(1)中运行,那么“ new A [N]”和“ delete [] A”的big-O是什么?新的int [N]是否有任何复杂性保证?

c++ performance memory-management c++17 c++20
1个回答
-1
投票

我找不到任何明确提及复杂性的东西。我也很确定,对于新的运算符(即内存分配本身),任何复杂性问题都是没有争议的。

但是,如果我们专注于新表达,则将[expr.new/22]缝合在一起:

创建一个类型为T的对象的new表达式将初始化对象,如下所示:(22.1)如果省略了new-initializer,则对象是默认初始化的([dcl.init])。

和[dcl.init / 7]:

要默认初始化类型T的对象意味着:...。(7.2)如果T是一个数组类型,每个元素都是默认初始化的。

我可以得出这样的操作的复杂度为O(N)。

© www.soinside.com 2019 - 2024. All rights reserved.