2013-02-12 86 views
-3
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?

+1

有''malloc()'永遠不會失敗的系統。可以說它們是不好的系統;) – pmg 2013-02-12 18:15:29

回答

0

我們不知道,因爲它是一個實現細節。 C標準對此沒有提及。

0

我們不能回答這個問題,因爲它不僅僅取決於系統具有多少內存,還有「系統上還有哪些內容正在運行」以及「系統的配置是什麼」。例如,如果我們在Linux/Unix系統中將rlimit設置爲不允許進程使用超過256MB,那麼無論系統具有多少GB或TB的RAM,都不允許分配超過256MB的數據。

另外,考慮1GB的系統與6GB的交換空間可能會給你一個更高的價值i比4GB的RAM和沒有交換空間的系統?

除了「系統中有多少RAM」之外,還有其他一些變量決定了應用程序可以分配多少內存。