【发布时间】:2015-07-23 20:25:02
【问题描述】:
当您知道C 上Linux 上的对象/项目的确切数量时,我很想知道static vs dynamic 的首选内存分配方法对性能(例如运行时间)有好处。少量对象(少量内存)和大量对象(大量内存)的成本。
e.g., type A[N] 与 type *A = malloc(sizeof(type) * N)
请告诉我。谢谢。
注意:我们可以对此进行基准测试,并且可能知道答案。但我想知道解释这两种分配方法性能差异的概念。
【问题讨论】:
-
这是两种完全不同的“成本”。就执行时间而言,静态分配是“免费的”,而如果使用不当,则会消耗内存。动态在内存使用方面是最佳的(同样,如果使用得当),但会花费一些处理器时间开销。
-
静态分配的大小限制也比动态分配低得多。
-
确实应该没什么区别。内存必须以任何一种方式分配,这只是操作系统链接器/加载器执行它还是您的程序执行它的问题。如果它可以由加载器完成,那么根据定义,它是一个外部循环成本,并且完全不相关。
-
非常感谢您的回答。请为我的问题投票,因为我需要一些分数来为答案投票。
-
@samarasa,无论您的代表如何,如果您觉得满意,请接受答案。 (点击答案旁边的复选标记即可。)
标签: c linux memory memory-management