【发布时间】:2013-12-06 07:13:48
【问题描述】:
我想编写一个内存不变的 C 程序。它永远不能分配超过一定数量的内存。
int main(){
int memory[512];
int i = 5;
i = i + 5;
memory[50] = i;
};
请注意,在此示例中 i = 5 和 i = i+5 将分配内存。我想完全避免内部内存分配过程(我认为这有点慢)。'有没有办法告诉 C 直接在我的内存数组上分配它?
【问题讨论】:
-
这里没有堆分配。只是堆栈分配。
-
不调用
malloc()可以避免堆分配。可以避免堆栈分配... - 错误...它们无法避免。甚至int main(){}也有堆栈分配。 -
如果你调用任何库函数,它们可能在内部使用
malloc()。您无法采取任何措施来防止这种情况发生。 -
另外,你为什么要这样做?是为了表演吗?堆栈分配已经是最快的了。堆分配可能很慢。
-
“我认为这有点慢” - 你绝对没有任何权利去假设这个和那个。如果您推断出,通过适当地对代码进行基准测试,堆分配会导致主要瓶颈,只有这样您才能继续尝试重写它以减少(或可能没有)堆分配。但同样,这需要大量的测试和测量。 请不要进行可怕的过早优化。
标签: c memory-management