这个循环运行多少次?

时间:2013-08-05 07:56:57

标签: c loops memory

采访问问:

while(1)
{
void * a = malloc(1024*1024); 
}

此循环将在2 gb ram和8 gb ram上运行多少次?

我说无限循环,因为即使内存已满,也没有终止条件。 他不同意。我现在不知道。请帮忙。

1 个答案:

答案 0 :(得分:9)

它应该无限期地运行。在大多数平台上,当没有更多可用内存时,malloc()将返回0,因此循环将继续运行而不会更改分配的内存量。 Linux允许内存过量使用,以便malloc()调用继续添加到虚拟内存。当malloc()用于管理内存的数据开始导致问题时,该进程可能最终被OOM Killer杀死(这不是因为您尝试使用已分配的内存本身,因为代码不使用它),但Linux没有被规定为问题中的平台。