我想知道为什么以下代码会导致执行错误?
#include <stdlib.h>
int main(void) {
asm("pushf\norl $ 0x40000, (%esp)\npopf\n");
*((int*) (((char*) malloc(5)) + 1)) = 23;
return 0;
}
谢谢!
答案 0 :(得分:0)
可能是因为您正在修改对齐检查标志,这是AFAIK保护的。或者因为malloc()返回一个对齐的区域,并且您的访问是未对齐的?不确定,但为什么你需要触摸这个标志呢?