【发布时间】:2012-07-14 12:38:02
【问题描述】:
void *p = malloc(1000);
*((int*)p) = 666;
*((int*)p+sizeof(int)) = 777;
int i;
for (i = 0; i<10; ++i)
printf("%d ", *((int*)p+sizeof(int)*i));
手动偏移是在编译时解决的,还是会增加运行时执行算术运算的开销?
【问题讨论】:
-
你为什么不看看组装出来的自己来判断呢?目前尚不清楚您在谈论什么偏移量,这可能取决于您的编译器和优化设置。
-
我说的是p指针地址的偏移量。
-
其中三个,一个在循环中。我上面的评论也适用:检查你的编译器产生了什么。
-
那是一些相当可怕的代码......
-
@Mat - 我特意提出了 3 个不同的场景来说明这一点。我不太擅长阅读汇编,这就是我在这里问的原因。
标签: c++ c memory offset resolve