如果我必须在c中使用128/64字节字符数组。哪一个更有效的静态分配char数组或动态内存分配为什么?如果我必须为1kb或母马分配内存,这也是有效的。
我想知道哪一个效率更高1或2.
1. char数组[128]或
2. char * abc = malloc(128);
答案 0 :(得分:2)
静态分配,我假设您的意思是使用关键字static
,在链接时发生。在运行时,除了可能对程序加载时间产生影响外,它基本上是零成本。
你不能比那更有效率。
修改强>
通过递增和递减寄存器来进行堆栈分配。它的效率低于static
,但比使用运行时内存分配库效率更高。
答案 1 :(得分:0)
堆栈分配比malloc()更有效,因为它只是堆栈指针的增量,而malloc()涉及操作系统和我们无法控制的幕后处理。对于相对较小的变量,使用堆栈除非有其他原因没有,就像你需要在函数超出范围后存在内存。对非常大的变量使用动态分配以避免堆栈溢出问题。什么是非常大的?取决于您的CPU和堆栈大小。对于Windows工作,我在堆栈上放了少于几K的东西。对于像AVR这样的小型嵌入式CPU,可以是255或更小 - 再次取决于您分配的堆栈大小。