c - while循环中的malloc

标签 c unix malloc

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

相关文章:

c - 将 int 的地址分配给 char 指针

database - Linux 中的 TNS 条目

linux - 访问另一台远程服务器Linux、Ubuntu的权限

java - 查找文件,对它们进行 gtar 并创建报告

c - 我需要为 50 个字符的 X 字符串数组分配多少内存?

c - C 中空指针的自由数组

c - 将数组中的数字写入函数命令

c - 显示打印运行时错误

c++ - 在运行时编译和 C++ 中的#include 自定义 header

c - 生产者消费者解决方案