我是C中的一個新手,我想知道應用程序允許的最大內存。 所以我寫了一個像下面這樣的小程序。C - 想知道程序中最大可分配的內存大小
我有一臺機器,總共有16GB的內存,使用2GB,14GB是免費的。 我預計這個程序停止在14GB左右,但它永遠運行。
想在這裏做錯嗎?
#include <stdlib.h>
#include <stdio.h>
int main(){
long total = 0;
void* v = malloc(1024768);
while(1) {
total += 1024768;
printf ("Total Memory allocated : %5.1f GB\n", (float)total/(1024*1024768));
v = realloc(v, total);
if (v == NULL) break;
}
}
編輯:在CentOS 5.4 64位上運行該程序。
只是FYI,如果你傳入一個NULL地址,'realloc'就會像'malloc'一樣行,所以你可以重寫你的代碼來排除第一個'malloc'並將'printf'移到'if v == NULL)'檢查。 – 2010-10-31 02:22:44
並且就此而言,循環應該簡單地運行'while(v!= NULL)'或者可能更濫用'while(v)'(最後不需要if/break) – 2010-10-31 02:24:31
請注意總連續可分配空間將比碎片化的小。還要注意,如果ASLR被激活,它可能會從運行到運行。 – ruslik 2010-10-31 02:30:10