哪一个更有效率,静态内存分配或动态内存分配

时间:2015-05-06 09:25:48

标签: c sockets memory heap-memory

如果我必须在c中使用128/64字节字符数组。哪一个更有效的静态分配char数组或动态内存分配为什么?如果我必须为1kb或母马分配内存,这也是有效的。

我想知道哪一个效率更高1或2.
1. char数组[128]或
2. char * abc = malloc(128);

2 个答案:

答案 0 :(得分:2)

静态分配,我假设您的意思是使用关键字static,在链接时发生。在运行时,除了可能对程序加载时间产生影响外,它基本上是零成本。

你不能比那更有效率。

修改

通过递增和递减寄存器来进行堆栈分配。它的效率低于static,但比使用运行时内存分配库效率更高。

答案 1 :(得分:0)

堆栈分配比malloc()更有效,因为它只是堆栈指针的增量,而malloc()涉及操作系统和我们无法控制的幕后处理。对于相对较小的变量,使用堆栈除非有其他原因没有,就像你需要在函数超出范围后存在内存。对非常大的变量使用动态分配以避免堆栈溢出问题。什么是非常大的?取决于您的CPU和堆栈大小。对于Windows工作,我在堆栈上放了少于几K的东西。对于像AVR这样的小型嵌入式CPU,可以是255或更小 - 再次取决于您分配的堆栈大小。