我繼續試用C.我有這個程序,可以讓你決定你想要吃多少RAM。試用C - 爲什麼我不能分配和使用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;
}
修訂問題:
的事情是,...如果我例如1024MB它的作品進入,我可以在任務管理器中看到它正在使用1GB的RAM。即使我進入1500MB它的工作原理..
但是,如果我進入2048MB它說
好像無法分配:(
或內存量即使我輸入1756MB
記住我是C新手,也許我正在省略一些重要的關聯編輯如何OS允許我訪問內存,它可能是什麼?
malloc可能會失敗並返回null,請檢查 –
由於您嘗試訪問內存,儘管分配失敗,您必須在嘗試使用它之前檢查'pMemory!= NULL'。另外,你不應該強制使用'malloc()',一般不會從'void *'強制轉換爲其他指針。 –
你的電腦有多少內存? –