我试图执行一个malloc语句,如下所示:
TYPODATO *prof=(TYPODATO *)malloc((size_t)H*V*B2*sizeof(TYPODATO));
其中CCD_ 1等于13037160840 B=13.04GB。如果我在控制台中执行命令free -m
以获得可用内存(MB(,则得到13486 MB=13.486 GB。
但是,前面的malloc语句返回一个NULL指针,表示不能分配这么多内存。请求的内存量没有系统中可用的那么多,但即使是这样,我也应该能够成功地分配它,因为系统可以使用虚拟内存。为什么在这种情况下系统不使用虚拟内存?
malloc()
不能以这种方式工作malloc((分配一个连续的内存块
您试图分配的内存超过连续可用内存,因此出现错误