【发布时间】:2017-12-14 05:31:14
【问题描述】:
我只是想知道free() 在 C 中的时间复杂度是多少。
例如,假设我的所有功能都是:
for (int i = 0; i < n; i++) {
free(ptr[i]); // this is just an example to show n pointers
}
是 O(n) 还是 O(n^2)?
【问题讨论】:
-
未由 C 语言本身指定。允许任何分配和解除分配策略。此外,如果每次您的示例程序具有未定义的行为时,它都是相同的
ptr。 -
这里的 n 是什么?被释放的内存块的大小,或者调用 free 的次数?
-
对不起,我没有具体说明,n 是要空闲的内存 ptr 的数量,并且 ptr 每次都会更改。我只是快速写了一个例子。
-
你尝试了一些并计时了吗?并不是说您会从中获得一般信息,但仍然...
-
free()相对于您的外部n的时间复杂度将始终为 O(1)。包含此循环的函数将至少为 O(n)。
标签: c time-complexity big-o