采访问问:
while(1)
{
void * a = malloc(1024*1024);
}
此循环将在2 gb
ram和8 gb
ram上运行多少次?
我说无限循环,因为即使内存已满,也没有终止条件。 他不同意。我现在不知道。请帮忙。
答案 0 :(得分:9)
它应该无限期地运行。在大多数平台上,当没有更多可用内存时,malloc()
将返回0,因此循环将继续运行而不会更改分配的内存量。 Linux允许内存过量使用,以便malloc()
调用继续添加到虚拟内存。当malloc()
用于管理内存的数据开始导致问题时,该进程可能最终被OOM Killer杀死(这不是因为您尝试使用已分配的内存本身,因为代码不使用它),但Linux没有被规定为问题中的平台。