while(1){
static int i=1;
int *p;
if(p=malloc(1024*1024)) //assigning 1 mb space
printf("%d.",i++);
else
exit(0);
}
如果上述程序運行在具有1GB ram的系統中,並且在具有4GB ram的另一系統中運行 我將在時間和價值上有什麼區別?malloc分配的大小取決於RAM?
while(1){
static int i=1;
int *p;
if(p=malloc(1024*1024)) //assigning 1 mb space
printf("%d.",i++);
else
exit(0);
}
如果上述程序運行在具有1GB ram的系統中,並且在具有4GB ram的另一系統中運行 我將在時間和價值上有什麼區別?malloc分配的大小取決於RAM?
我們不知道,因爲它是一個實現細節。 C標準對此沒有提及。
我們不能回答這個問題,因爲它不僅僅取決於系統具有多少內存,還有「系統上還有哪些內容正在運行」以及「系統的配置是什麼」。例如,如果我們在Linux/Unix系統中將rlimit
設置爲不允許進程使用超過256MB,那麼無論系統具有多少GB或TB的RAM,都不允許分配超過256MB的數據。
另外,考慮1GB的系統與6GB的交換空間可能會給你一個更高的價值i
比4GB的RAM和沒有交換空間的系統?
除了「系統中有多少RAM」之外,還有其他一些變量決定了應用程序可以分配多少內存。
有''malloc()'永遠不會失敗的系統。可以說它們是不好的系統;) – pmg 2013-02-12 18:15:29