看到一道题是这样的:char *p;while (1) {p = malloc(1);*p = 0;}答案是:最终程序会因为向0地址写入而退出我一直搞不懂是为什么,请你们帮我解释一下,谢谢。
这是个死循环,程序一直通过malloc申请内存,肯定会引起内存耗尽。然后malloc分配内存失败,返回NULL指针,"*p=0"这行试图向NULL指针写入数据,进而引起程序终止(通常操作系统会因为“段错误”而终止程序,就是向不允许写入数据的内存写入数据)。