大数字时 mmap() 分配失败?
mmap() Allocation Fails With Large Numbers?
在 macOS Big-Sur 上使用 32GB 的 Ram,其中 24+ 是免费的我 运行 以下程序:
void *void_new_block = mmap(nullptr, sizeof(MyClass) + 300000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, -1,
0);
if (void_new_block == (void *) (-1)) {
std::cout << strerror(errno) << std::endl;
return nullptr;
}
但是 mmap 一直失败,我在屏幕上看到以下消息:
Invalid argument
出现这种运行ge 行为的原因是什么?
另外,sizeof(MyClass) = 48
根据 documentation:
Conforming applications must specify either MAP_PRIVATE or MAP_SHARED.
Linux也有类似的限制:
This behavior is determined by including exactly one of the following values in flags
MAP_SHARED
MAP_SHARED_VALIDATE
MAP_PRIVATE
在 macOS Big-Sur 上使用 32GB 的 Ram,其中 24+ 是免费的我 运行 以下程序:
void *void_new_block = mmap(nullptr, sizeof(MyClass) + 300000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, -1,
0);
if (void_new_block == (void *) (-1)) {
std::cout << strerror(errno) << std::endl;
return nullptr;
}
但是 mmap 一直失败,我在屏幕上看到以下消息:
Invalid argument
出现这种运行ge 行为的原因是什么?
另外,sizeof(MyClass) = 48
根据 documentation:
Conforming applications must specify either MAP_PRIVATE or MAP_SHARED.
Linux也有类似的限制:
This behavior is determined by including exactly one of the following values in flags
MAP_SHARED
MAP_SHARED_VALIDATE
MAP_PRIVATE