我试图找出我的机器(1 Gb RAM 160 Gb HD Windows平台)上可以最大程度地分配多少内存。
我读到malloc可以分配的最大内存被限制为物理内存(在堆上)。
同样,当程序超出一定程度的内存消耗时,计算机也会停止工作,因为其他应用程序无法获得所需的足够内存。
为了确认,我用C语言编写了一个小程序:
int main(){
int *p;
while(1){
p=(int *)malloc(4);
if(!p)break;
}
}
我希望有一段时间内存分配失败并且循环中断,但是我的计算机挂起了,因为它是一个无限循环。
我等待了大约一个小时,最后我不得不强行关闭计算机。
一些问题:
malloc也从HD分配内存吗?
出现上述行为的原因是什么?
为什么在任何时候都没有循环中断?
为什么没有分配失败?
qq_遁去的一_1
四季花海
相关分类