我在某处读到了分配k个字的内存所花费的时间是O(k),我想知道这个时间对于运行时和编译时内存分配都是一样的,意味着想要知道{{ 1}}和int A[100];
需要相同的时间或不同的
答案 0 :(得分:0)
动态分配内存可能需要O(k)时间。这取决于分配器(malloc
)或其调用的函数之一是在返回之前初始化内存。例如,如果malloc
调用Windows LocalAlloc
函数从操作系统获取内存,它可以传递LMEM_ZEROINIT
标志以将所有字节初始化为0。
出于安全原因,某些操作系统内存分配器会自动使用零启动内存。 malloc
的某些实现将使用已知模式(如0xDEADBEEF)初始化内存,尤其是在调试模式下。这样,如果您读取核心转储,您可以查看您的程序是否正在访问已分配但未由程序初始化的内存。
所以你没有问过的明确问题的答案是,是的,可能的,甚至可能是k字节的动态内存分配需要O (k)时间。