为什么我不能分配比 RAM 中可用的内存更多的内存?
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
以获取以 MB 为单位的可用内存,我得到 13486 MB = 13.486 GB。
但是前面的malloc语句returns一个NULL指针,说明不能分配这么大的内存。请求的内存量没有系统可用的那么多,但即使是我也应该能够成功分配它,因为系统可以使用虚拟内存。为什么在这种情况下系统没有使用虚拟内存?
malloc()
这样不行。 malloc() 分配一个连续的内存块。
您正在尝试分配比连续可用内存更多的内存,因此出现错误。
我正在尝试执行如下所示的 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语句returns一个NULL指针,说明不能分配这么大的内存。请求的内存量没有系统可用的那么多,但即使是我也应该能够成功分配它,因为系统可以使用虚拟内存。为什么在这种情况下系统没有使用虚拟内存?
malloc()
这样不行。 malloc() 分配一个连续的内存块。
您正在尝试分配比连续可用内存更多的内存,因此出现错误。