为了账号安全,请及时绑定邮箱和手机立即绑定

C 关于malloc()函数的疑问

C 关于malloc()函数的疑问

C
Yexiaomo 2016-07-26 22:53:26
一道选择题如下:对于以下代码段,正确的说法是:(__)char *p; while(1) {     p = malloc(1);     *p = 0; }A:最终程序 会因为 没有空间 而退出 B:最终程序 会因为 向 0 地址写入 而退出 C:程序会一直运行下去 D:程序不能被编译正确答案: B为什么?求解
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

  • D. 这段代码是合法的,所以可以编译。

  • C. 肯定是无法永远运行下去啦。

  • A. 这确实是引起程序终止的原因,但不是直接原因。

  • B. 程序一直分配内存,肯定会引起内存耗尽。而malloc在分配内存失败时并不会终止程序,而是返回NULL指针。而第5行代码试图向NULL指针位置写入数据,这会引起程序终止(通常操作系统会因为“段错误”而终止程序)。

所以 B 才是引起程序退出的直接原因。

查看完整回答
10 反对 回复 2016-07-26
  • 1 回答
  • 1 关注
  • 6905 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信