我偶然发现了一个汇编编程挑战,我需要找到为什么下面的代码在尝试运行时出现总线错误。经过大量的谷歌搜索,我仍然无法弄清楚为什么。我对汇编x86的理解不是很好,找到解决方案的任何提示都将非常感激。在汇编内联编程中发生总线错误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;
}
这可能有所帮助:http://stackoverflow.com/questions/212466/what-is-a-bus-error – BlackBear 2012-04-25 19:26:57
谢谢,这有很大的帮助。我发现错误:malloc(5)之后的“+1”! – juliensaad 2012-04-25 19:32:16