当C中的堆上没有可用内存时,如何尝试分配内存并防止系统终止

时间:2019-01-24 03:31:26

标签: c pointers malloc

我在x64 Linux上运行了以下C代码,当我尝试每次仅在几个字节中连续在堆中分配内存,直到没有可用的内存时,malloc()函数似乎没有返回NULL指针并导致系统终止。

但是,如果我每次分配几个 MB ,当malloc()分配内存失败时,它将返回NULL,并且if-break条件生效并且正常返回。


代码

#include <stdlib.h>

void main()
{
    void* p = 0;
    while(1) {
        p = malloc(1);
        if(!p) break;
    }
    return;
}

0 个答案:

没有答案