我试图执行一个malloc语句,如下所示:
TYPODATO *prof=(TYPODATO *)malloc((size_t)H*V*B2*sizeof(TYPODATO));
,H*V*B2*sizeof(TYPODATO)
等于13037160840 B = 13.04 GB。如果我在控制台中执行命令free -m
以获取可用内存(以MB为单位),则会得到13486 MB = 13.486 GB。
但是,前面的malloc语句返回NULL指针,指示无法分配这样的内存量。请求的内存量不及系统中可用的内存量,但是即使我应该能够成功分配它,也会导致系统可以使用虚拟内存。为什么在这种情况下系统不使用虚拟内存?
答案 0 :(得分:4)
malloc()
不能这样工作。 malloc()分配一个连续的内存块。
您正在尝试分配比连续可用更多的内存,因此会出现错误。