パスワードを忘れた? アカウント作成
385301 journal

yakusouX5の日記: mem.c

日記 by yakusouX5
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned int i=0,j;
char *mem[5];

while ( ((mem[i]=(char *)malloc(1024*1024*1024)) != NULL) && i < 5){
    printf("mem[%d] ok\n",i);
    for (j=0; j<1024*1024*1024; j++){
    *(mem[i]+j)=0;
    }
i++;
}

while(1){}
return 0;
}

何なのかと。32Bitと64Bit環境の両方で実行してみて分かったのです。どんなに、swapを多くとっても32Bitだと4Gbyteまでしか確保できない事を
常識が無いのでして、いろいろと確認してみないと分からないのですよ
ちなみに、64Bitだと本当に4Gbyteを越えて確保できますね。試しに、swap 20Gbyteをつくって実行してみました
物理memory 1Gbyteなのであふれた約4Gbyteがswapに確保されました。おー、やはり多少時間がかかります。2分以内ですけど

それよりも、一度にmalloc(1024*1024*1024*4)なんてできないんですね。制限されているようです
それでは、また
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...