2013-02-12 82 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”之外,还有其他一些变量决定了应用程序可以分配多少内存。