gpt4 book ai didi

c - malloc 可以分配的最大内存

转载 作者:行者123 更新时间:2023-11-30 16:55:25 30 4
gpt4 key购买 nike

我试图弄清楚我可以在我的机器上最大程度地分配多少内存(1 Gb RAM 160 Gb 高清 Windows 平台)。

我读到 malloc 可以分配的最大内存仅限于物理内存(在堆上)。

此外,当程序消耗的内存超过一定水平时,计算机会停止工作,因为其他应用程序无法获得所需的足够内存。

为了确认,我用 C 编写了一个小程序:

int main(){  
int *p;
while(1){
p=(int *)malloc(4);
if(!p)break;
}
}

我希望有一天内存分配会失败并且循环会中断,但我的计算机挂起,因为它是一个无限循环。

我等了大约一个小时,最后我不得不强制关闭我的电脑。

一些问题:

  • malloc 也从 HD 分配内存吗?
  • 造成上述行为的原因是什么?
  • 为什么循环没有在任何时间点中断?
  • 为什么没有发生分配失败?

最佳答案

I read that the maximum memory malloc can allocate is limited to physical memory (on heap).

错误:大多数计算机/操作系统都支持由磁盘空间支持的虚拟内存。

Some questions: does malloc allocate memory from HDD also?

malloc 询问操作系统,而操作系统可能会使用一些磁盘空间。

What was the reason for above behavior? Why didn't the loop break at any time?

Why wasn't there any allocation failure?

您只是一次要求太少:循环最终会中断(在您的计算机由于虚拟内存与物理内存大量过剩以及随之而来的超频繁磁盘访问而减慢速度之后,这是一个已知的问题“殴打”),但在那之前它就耗尽了你的耐心。尝试获取例如而是一次一兆字节。

When a program exceeds consumption of memory to a certain level, thecomputer stops working because other applications do not get enoughmemory that they require.

完全停止的可能性不大,但是当通常需要几微秒的操作最终花费(例如)数十毫秒时,这四个数量级肯定会让人感觉好像计算机基本上已经停止运行,通常需要一分钟的事情可能需要一周的时间。

关于c - malloc 可以分配的最大内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40317278/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com