gpt4 book ai didi

c - 编译时和运行时内存分配之间的时间差

转载 作者:行者123 更新时间:2023-11-30 20:35:48 24 4
gpt4 key购买 nike

我在某处读到分配 k 个字的内存所花费的时间是 O(k),我想知道运行时和编译时内存分配的时间是相同的,意味着想知道int A[100];int *A = (int*) malloc(sizeof(int) * 100); 需要相同或不同的时间

最佳答案

动态分配内存可能需要O(k)时间。这取决于分配器 (malloc) 或其调用的函数之一是否在返回之前初始化内存。例如,如果 malloc 调用 Windows LocalAlloc 函数从操作系统获取内存,它可以传递 LMEM_ZEROINIT 标志来初始化所有字节0.

出于安全原因,某些操作系统内存分配器会自动将内存初始化为零。 malloc 的某些实现将使用 0xDEADBEEF 等已知模式初始化内存,尤其是在 Debug模式下。这样,如果您读取核心转储,您可以看到您的程序是否正在访问已分配但未由程序初始化的内存。

因此,您没有提出的明确问题的答案是,是的,有可能,甚至可能,k 字节的动态内存分配将花费 O(k) 时间。

关于c - 编译时和运行时内存分配之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37887113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com