C mmap无法分配内存--绝对不是内存不足

C mmap无法分配内存--绝对不是内存不足,c,memory,mmap,C,Memory,Mmap,无论出于何种原因,我无法使用C语言中的mmap打开任何大小的文件。我可能遗漏了一些明显的内容,因此非常感谢您的建议。我搜索了类似的回答,没有找到任何有用的。这是我的代码——是的,非常简单 #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc, cons

无论出于何种原因,我无法使用C语言中的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;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,const char*argv[]
{
作废*数据;
int-fd;
结构统计某人;
fd=打开(“small.txt”,仅限ordu);
数据=mmap(0,标准尺寸,保护读取,地图共享,fd,0);
如果(数据==MAP_失败)perror(“mmap”);
返回0;
}
small.txt是一个非常小的文本文件,大小为4.0 K。正在运行的特定机器具有大量RAM(>500G)。记忆不是这里的问题。我意识到这是我正在做的事情,如果你能为我指出这一点,我将非常感激


我收到的错误是“mmap:无法分配内存”

也许您可以使用此代码,请查看此链接:


您正在将未初始化的
sb.st_size
作为长度参数传递。很可能是一个巨大的数字,就是这样。非常感谢。
int fd;
struct stat sb;
fd = open("small.txt", O_RDONLY);

if (fstat(fd, &sb) == -1)           /* To obtain file size */
    handle_error("fstat");