在下面的代码中,我将一个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/

10-16 01:52