问题遇到的现象和发生背景
准大学生自学c语言的时候碰到的问题,我认为应该选择a,但答案为b
对于以下代码段,正确的说法是:
A.最终程序会因为没有没有空间了而退出
B.最终程序会因为向0地址写入而退出
C.程序会一直运行下去
D.程序不能被编译
问题相关代码
char *p;
while (1) {
p = malloc(1);
*p = 0;
}
运行结果及报错内容
我试着把这些代码在vs中运行,结果电脑死机。
我的理解
指针 p 是指向一个变量,语句 *p = 0; 应该是向所指的这块变量重复赋值,应该不会产生任何影响;而上面那句 p = malloc(1); 则是不断申请1字节的空间,一直重复下去会导致无限申请内存而死机
请求大家指点,谢谢!