在下面的代码中,我将一个malloc调用放入了while循环中
int main()
{
int *ptr;
while(1) {
ptr=malloc(1000);
if (ptr == NULL) break;
}
return (0);
}
while loop
会一直运行到堆中剩余空间还是会一直持续运行,除非由于我们没有在分配的内存中写入任何数据而将其杀死,否则它将一直运行下去?当然,有内存泄漏的意图,因此可以回答上述问题。
最佳答案
在某些迭代之后,malloc
将失败。由于您不检查malloc的返回值,因此没有什么可以打破循环的。
因此它将无限循环。
随着您的休息,当malloc返回NULL时,它将最终跳出循环。正如您已经提到的,内存泄漏。通常,一旦程序退出,操作系统就会要求所有内存。虽然,正确地free
是个好习惯。
关于c - malloc在while循环中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13091456/