繁体   English   中英

为什么我不能分配比 RAM 中更多的 memory?

[英]Why cannot I allocate more memory than the available in RAM?

我试图执行一个 malloc 语句,如下所示:

TYPODATO *prof=(TYPODATO *)malloc((size_t)H*V*B2*sizeof(TYPODATO));

H*V*B2*sizeof(TYPODATO)等于 13037160840 B = 13.04 GB。 如果我在控制台中执行命令free -m以获取可用的 memory(以 MB 为单位),我得到 13486 MB = 13.486 GB。

但是前面的malloc语句返回了一个NULL指针,说明不能分配这么多的memory。 请求的memory的数量没有系统中可用的多,但即使是我应该可以成功分配,因为系统可以使用虚拟的memory。 为什么在这种情况下系统不使用虚拟 memory?

malloc()不能以这种方式工作。 malloc() 分配 memory 的单个连续块
您正在尝试分配比连续可用更多的 memory,因此出现错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM