0
無論出於何種原因,我無法在C中使用mmap打開任何大小的文件。我可能會丟失明顯的東西,因此您的建議將不勝感激。我搜索了類似的回覆,但沒有找到任何幫助。這是我的代碼 - 是的,它非常簡單。mmap無法分配內存 - 絕對不會出現內存不足
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char * argv[])
{
void * data;
int fd;
struct stat sb;
fd = open("small.txt", O_RDONLY);
data = mmap(0, sb.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (data == MAP_FAILED) perror("mmap");
return 0;
}
small.txt是一個非常小的文本文件,它的大小爲4.0 K.正在運行的特定機器具有大量的RAM(> 500G)。內存不是這裏的問題。我意識到這是我正在做的事情,如果您能爲我指出這一點,我將非常感激。
我得到的錯誤是「MMAP:無法分配內存」
你傳入'未初始化的sb.st_size'長度參數。它可以是一個很大的數字。 – zch
就是這樣。謝謝! –