スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メモリの上限

プログラムの都合上

使用できるメモリの上限を調べないといけないことになったので

自己流で調べてみた

*注意:おかしくなっても責任は取りません!動かすならば自己責任でね!*
さっそくプログラムから

//ローカル配列設定
SETS *L1 = NULL;

for(unsigned int i = 1000;;i = i + 1000){
printf("now = %d\n",i);

L1 = (SETS *)calloc(i,sizeof(SETS));
memset(L1,'*',i * sizeof(SETS) - 1);

sleep(1);

if(L1 != NULL){
free(L1);
L1 = NULL;
}else{
break;
}

}


適当な構造体を定義し、どれだけ構造体を作れるか

それだけです

自分の場合、1つの構造体につき約8KByte必要です

ループで作る数を指定し、callocで領域確保

callocが領域確保を失敗するとNULLを返すので

NULLの場合はループを抜け

領域確保された場合は、free()を呼びます

ただそれだけです

自分の場合は

Screenshot_from_2014-12-23 15:25:13

261、000個確保することが出来ました

計算すると

261,000 * 8KB = おおよそ8GByteということに

リソースモニターの方でもチェックしましたが

Screenshot_from_2014-12-23 15:23:15

画像のものはプログラムが終了してから、少し時間が立っているので

グラフが落ち着いていますが

動いているときは、計算した値に近いメモリが使われていたので

まぁ合っているかなと…

あまり自信は無いので、正確に測りたいという方は

お勧めできないかも…

特にメモリ関係ですので、動き方次第でPCトラブルにもなりかねませんので

真似される方は自己責任でお願いします!

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。