私はCを試し続けます。私はあなたが食べたいRAMの量を決定することができるこのプログラムを持っています。 UPDATEDCで実験する - 2GBのメモリを割り当てて使用できないのはなぜですか?
char * eatRAM()
{
unsigned long long toEat;
unsigned long long i = 0;
float input;
char * pMemory = NULL;
int megaByte = 1048576;
puts("How much RAM do you want to eat? (in Mega Bytes)");
puts("NOTE: If you want to eat more RAM than you have available\nin your system, the program will crash");
printf("\n>> MB: ");
scanf("%f", &input);
toEat = (unsigned long long)(input * megaByte);
pMemory = malloc(toEat);
printf("\n\nEating in total: %llu Bytes\n", toEat);
puts("Check your task manager!\n");
if(pMemory != NULL)
{
printf("\n\nEating in total: %llu Bytes\n", toEat);
puts("Check your task manager!\n");
for(i; i < toEat; i++)
{
pMemory[i] = 'x';
}
}
else
{
puts("\nSeems like that amount of memory couldn't be allocated :(\n");
}
return pMemory;
}
QUESTION:事は、私は例1024メガバイトのために入力した場合、それが動作すること...ある
、私はそれが1GBのRAMを使用しているタスクマネージャで見ることができます。私は1500メガバイトそれが動作します。..
を入力してくださいしかし、私は2048メガバイトを入力する場合、それは言っても
を割り当てることができませんでした:(
またはメモリの量のことのように思えます私が入力しても1756MB
私はC言語に新しいです、多分私は何か重要なrelat OSがメモリにアクセスする方法を教えてください。何ができるのですか?
malloc関数は、おそらくあなたはそれを使用しようとする前に、 'pMemory!= NULL'をチェックする必要があり、失敗し、割り当てが失敗したものの、メモリにアクセスしようとするため、ヌル、確認することを –
クラッシュを返します。また、 'malloc()'をキャストすべきではありません。通常は 'void *'から他のポインタにキャストしないでください。 –
あなたのコンピュータにはどのくらいのRAMがありますか? –