【发布时间】:2020-02-10 21:03:20
【问题描述】:
最近的 c++ 标准中的内存分配操作是否有复杂性保证? 也就是说,如果我有一个类 A,其默认构造函数和析构函数在 O(1) 中运行,那么“new A[N]”和“delete[] A”的大 O 是什么? 新的 int[N] 有没有复杂度保证?
【问题讨论】:
-
在任何真实机器上,我看不出
new怎么可能小于 O(N),因为例如操作系统可能必须在将内存分配给您之前将其归零。跨度> -
也有点相关stackoverflow.com/questions/282926/…。我的问题中有“标准”。
-
N 个元素的数组的初始化将是 O(N)。但是,内存分配部分不清楚。所以我的问题主要是关于分配部分。
-
如果标准保证对 STL 容器的操作性能,例如 vector::push_back,那么可以推断出 new 和 delete 的最坏情况性能,但它应该明确指定“new”的性能.
标签: c++ performance memory-management c++17 c++20