我尝试使用mmap()
来操纵虚拟内存。我想保留并提交一段内存。我测试了这个代码:为什么调用大尺寸的mmap()不会失败?
const unsigned long gygabyte = 1024 * 1024 * 1024;
const unsigned long gygabyteCount = 2;
const unsigned long maxCapacity = gygabyteCount * gygabyte;
int main()
{
char* pMemory;
pMemory = (char*)mmap(NULL, maxCapacity, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (mprotect(pMemory, maxCapacity, PROT_READ | PROT_WRITE) != 0)
{
cout << "Memory Allocation has failed" << endl;
}
usleep(-1);
return 0;
}
我从终端上运行了我的程序(比如说6)的几个副本。我从未见过任何一个“内存分配失败”。我正在使用4GB RAM的64位Ubuntu上运行。任何人都可以告诉我这件事吗
阅读关于内存过量使用 – PlasmaHH 2012-02-03 12:58:42
您发布的代码没有提交任何内容。尝试通过这些内存区域。 – Mat 2012-02-03 13:04:00