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