私は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が失敗するはずだと理解していました。確かに、1つのブロックでmalloc 20GBを試してみると、これは失敗します。
私のセットアップ:ubuntu 10 8Gb ram、<= 2Gbスワップ、HD 1TB(これは重要ですか?)
誰もが私が持っているよりも多くのメモリをリークすることができる方法についての考えを持っています