【发布时间】:2018-09-24 08:41:37
【问题描述】:
假设有以下情况:
int** data = calloc(3, sizeof(int* ));
int* dynamicInt = calloc(1, sizeof(int));
int automaticInt = 0;
int stackint[1] = {0};
data[0] = dynamicInt;
data[1] = &automaticInt;
data[2] = stackint;
然后您将使用 *data[i] 来浏览值
在我看来,从堆跳转到栈甚至会比从堆跳转到堆中的另一个地址要慢。
分配这些指针的最快方法是什么? 真正有用的是,如果有人列举可能的变化(例如:stack-stack: 6(fastest)、heap-heap 5、auto-auto 4、heap-stack 3 等)
【问题讨论】:
-
如果你有一台普通的电脑,内存就是内存。没有区别。
-
如果它真的很重要,大多数现代汇编程序都有一个预取操作来在需要之前预加载地址。这可以减轻或消除缓存的第一个负载。
标签: c pointers memory optimization memory-management