繁体   English   中英

malloc在while循环中

[英]malloc in a while loop

在下面的代码中,我将一个malloc调用放入了while循环中

int main()
{
    int *ptr;
    while(1) { 
        ptr=malloc(1000);
        if (ptr == NULL) break;
    }
    return (0);
}

while loop会一直运行到堆中剩余空间还是会一直持续运行,除非由于我们没有在分配的内存中写入任何数据而将其杀死,否则它将一直持续运行? 当然,存在内存泄漏的意图是可以解决上述问题。

经过某些迭代后, malloc将失败。 由于您不检查malloc的返回值,因此没有什么可以打破循环的。

因此它将无限循环。


随着您的休息,当malloc返回NULL时,它将最终跳出循环。 正如您已经提到的,内存泄漏。 通常,一旦程序退出,操作系统就会要求所有内存。 虽然,这是正确free它的一个好习惯。

该进程最终将达到一个限制(进程限制,用户限制,磁盘限制),然后正常终止。 它可能会损坏您的硬盘,并且系统的其余部分将在相当长的一段时间内停止运行。

如果使用内存,则操作系统不会提供无花果。

它将最终恢复。 但是为什么要做这么愚蠢的事呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM