2 baidu 25298443 baidu_25298443 于 2016.03.06 17:36 提问

C语言内存分配malloc导致的程序退出

char *p;
while (1) {
p = malloc(1);
*p = 0;
}

这样写最后是因为没有内存退出还是向0写入退出?怎么感觉是内存完了

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.06 18:21
已采纳

内存分配失败就会返回空指针

bealing
bealing   Rxr 2016.03.06 18:17

堆内存被使用完后,在申请就睡失败,p就是NULL,即地址为0写入,而这个地址是受程序保护的,无法写入因此退出

atinghaodea
atinghaodea   2016.03.06 18:00

个人觉得你这个应该是会导致堆内存不够,导致程序异常退出

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!