gpt4 book ai didi

c - 如果堆内存满了会发生什么?

转载 作者:行者123 更新时间:2023-11-30 14:49:20 25 4
gpt4 key购买 nike

  1. 下面的情况会发生什么?
  2. 如果我写 if (p == NULL) { break; 会发生什么? }

    #include <stdio.h>  
    void main()
    {
    int *p;
    while (1)
    {
    p = malloc(1024); // allocating memory in infinite while loop
    // if (p == NULL) { break; }
    }
    }

最佳答案

  1. 您可能预计最终会耗尽内存,在这种情况下 malloc 必须返回 NULL。但请注意,某些 C 运行时库和操作系统在您使用内存之前不会实际分配内存。由于您没有使用内存,因此您可能会发现循环会永远运行,但这并不是由于 malloc 的显式失败所致。

  2. 如果 malloc 分配失败,包含 if 语句将结束程序。如果 C 运行时库和操作系统按照我提到的方式运行,那么 malloc 很可能永远不会分配失败,并且您的程序可能无限循环尽管 if 条件。

关于c - 如果堆内存满了会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com