我在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;
}