我正在复习 c,重做一些旧练习并在运行此代码段时得到一些不寻常的结果(我知道它会泄漏,但想知道系统允许多少..)
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
void *page = 0; int index;
index = 0;
while(1)
{
page = malloc(1073741824); //1GB
if(!page)break;
++index;
}
printf("memory failed at %d\n",index);
return 0;
}
我实际上得到:
内存在 131070 失败
这表明它认为它分配了 131070 x 1GB 内存(大量泄漏)
我以前知道 malloc 在消耗所有虚拟内存之前应该失败,当然如果我尝试在一个块中 malloc 20GB,这会失败。
我的设置:ubuntu 10 8Gb ram,<= 2Gb swap,HD 1TB(这有关系吗?)
任何人都知道它如何泄漏比我更多的内存