首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果堆内存满了会发生什么?

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

Stack Overflow用户
提问于 2018-04-04 13:35:32
回答 2查看 3.4K关注 0票数 0
  1. 在下面的情况下会发生什么?
  2. 如果我写if (p == NULL) { break; }会发生什么? #包括 void (){ int *p;while (1) {p= malloc(1024);//在无限时间循环// if (p == NULL) {==NULL;}}中分配内存
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-04 13:43:38

在下面的情况下会发生什么?

你的垃圾堆会满的。当这种情况发生时,malloc()将无法再分配内存,它将无限期地返回NULL指针。

如果我写if (p == NULL) { break; }会发生什么?

你的垃圾堆会满的。但是在这里,您的程序将退出,因为您正在脱离while循环,以防malloc()无法分配内存。

票数 0
EN

Stack Overflow用户

发布于 2018-04-04 14:06:39

  1. 您可能希望最终耗尽内存,在这种情况下,malloc必须返回NULL。但是请注意,一些C运行时库和操作系统在使用它之前不会实际分配内存。由于您没有使用内存,您可能会发现循环永远运行,但不是由于malloc的显式失败。
  2. 如果if无法分配,则包含malloc语句将结束程序。如果C运行时libary和操作系统以我前面提到的方式运行,那么malloc很可能永远不会失败,尽管有if条件,但是您的程序可以无限循环。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49652452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档