我偶然發現了一個彙編編程挑戰,我需要找到爲什麼下面的代碼在嘗試運行時出現總線錯誤。經過大量的谷歌搜索,我仍然無法弄清楚爲什麼。我對彙編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