【发布时间】:2012-04-26 03:41:54
【问题描述】:
我偶然发现了一个汇编编程挑战,我需要找出为什么以下代码在尝试运行它时会出现总线错误。经过多次谷歌搜索,我仍然无法弄清楚为什么..我对汇编 x86 的理解不是很好,非常感谢任何关于找到解决方案的提示。
代码如下:
#include <stdlib.h>
int main(void) {
asm("pushf\n"
"orl $ 0x40000, (%esp)\n"
"popf\n");
*((int*) (((char*) malloc(5)) + 1)) = 23; // This line causes the Bus Error
return 0;
}
【问题讨论】:
-
谢谢,帮了大忙。我发现错误:malloc(5) 后面的“+1”!