if (p == NULL) { break; }会发生什么?
#包括 void (){ int *p;while (1) {p= malloc(1024);//在无限时间循环// if (p == NULL) {==NULL;}}中分配内存发布于 2018-04-04 13:43:38
在下面的情况下会发生什么?
你的垃圾堆会满的。当这种情况发生时,malloc()将无法再分配内存,它将无限期地返回NULL指针。
如果我写
if (p == NULL) { break; }会发生什么?
你的垃圾堆会满的。但是在这里,您的程序将退出,因为您正在脱离while循环,以防malloc()无法分配内存。
发布于 2018-04-04 14:06:39
malloc必须返回NULL。但是请注意,一些C运行时库和操作系统在使用它之前不会实际分配内存。由于您没有使用内存,您可能会发现循环永远运行,但不是由于malloc的显式失败。if无法分配,则包含malloc语句将结束程序。如果C运行时libary和操作系统以我前面提到的方式运行,那么malloc很可能永远不会失败,尽管有if条件,但是您的程序可以无限循环。https://stackoverflow.com/questions/49652452
复制相似问题