char *p;while (1) { p = malloc(1); *p = 0;}
局部变量不初始化默认为0,也许是你这个指针变量p没有初始化,默认为0了。然后malloc的void类型直接给不了char型的p,p的地址还是0,后面给他解引用赋值,就在0地址写入了