【发布时间】:2015-03-13 22:16:57
【问题描述】:
我怀疑 delete[] 是 O(n) 而其他是 O(1),但我想确定一下。再说一次,分配可变内存量的固定时间似乎并不正确。
【问题讨论】:
-
分配的复杂度与 O(n) 相关,因为必须映射到虚拟地址的物理页数取决于分配大小。还有一个分配的内存头的链表,可能还有一个释放的内存头的链表。对于 X86,页面大小为 4K,但我不确定最小分配是多少。释放内存并不总是取消映射和释放虚拟页面,并且可能只是将标头节点从分配的列表移动到已释放的列表。当一个进程结束时,该进程的虚拟寻址被关闭,所有物理页面都被释放。
-
@rcgldr - 在某些操作系统上,不会立即分配物理页面。
标签: c++ c memory-management big-o