在下面的代码中,我在 while 循环中放置了 malloc 调用
int main()
{
int *ptr;
while(1) {
ptr=malloc(1000);
if (ptr == NULL) break;
}
return (0);
}
while 循环
会一直运行到堆中剩余空间为止,还是会一直运行下去,除非它被终止,因为我们没有在分配的内存中写入任何数据?
当然,存在内存泄漏,这是为了回答上述问题。
最佳答案
经过一定的迭代后,malloc
将失败。由于您不检查 malloc 的返回值,因此没有什么可以打破循环。
所以它会无限循环。
<小时/>通过你的break,当malloc返回NULL时,它最终会跳出循环。正如您已经提到的,存在内存泄漏。通常,一旦程序退出,操作系统就会占用所有内存。尽管如此,正确地释放
它是一个很好的做法。
关于c - while循环中的malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091456/