Tôi cố gắng sử dụng mmap()
để thao tác bộ nhớ ảo. Tôi muốn dự trữ và cam kết một khu vực của bộ nhớ. Tôi đã thử nghiệm mã này:Tại sao gọi mmap() với kích thước lớn không thành công?
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;
}
Tôi đã chạy một vài bản sao chương trình của mình (ví dụ 6) từ thiết bị đầu cuối. Tôi chưa bao giờ thấy "Phân bổ bộ nhớ đã thất bại" trong bất kỳ cái nào. Tôi đang chạy trên Ubuntu 64-bit với RAM 4GB. Bất cứ ai có thể cho tôi biết một cái gì đó về điều này?
đọc về ghi đè bộ nhớ – PlasmaHH
Mã bạn đăng không cam kết bất kỳ thứ gì. Hãy thử đi qua các vùng bộ nhớ đó. – Mat