我在我的 cpp 代码中使用 mmap() 来映射一个大尺寸区域(100,000,000 字节 ~ 100MB)。
从 man mmap 我了解到我只能知道它是否成功,我不知道它成功映射了多少大小。
就我而言,我可以使用 8192 字节的缓冲区迭代地读取该区域,但是在我读取 ~24MB 之后,我得到了 SIGSEGV - 意味着 mmap 没有成功映射整个区域?
我正在通过 memcpy 函数读取以从映射区域复制到堆上的缓冲区。(当缓冲区在堆栈上时,我也看到了相同的行为)。
我怎么知道它是否映射了整个区域?如果它映射了整个区域,那么为什么在读取大约 24MB 字节后我会得到 SIGSEGV?
谢谢!