Windows具有VirtualAlloc,它允許您保留一個連續的地址空間區域,但實際上不使用任何物理內存。稍後當你想使用它(或其中的一部分)時,你再次調用VirtualAlloc來提交以前保留頁面的區域。任何方式來保留但不提交在Linux內存?
這實際上是非常有用的,但我想最終將我的應用程序移植到Linux上 - 所以如果稍後無法移植它,我不想使用它。 Linux有辦法做到這一點?
編輯 - 使用案例
我想分配4 GB的或一些這樣的虛擬地址空間,但只承諾其64K一次。這將給我一個零拷貝的方式來增長一個高達4 GB的數組。這很重要,因爲典型的陣列大小和副本的兩倍會爲非常大的陣列帶來看似隨機的不可接受的延遲。
什麼樣的用例可以滿足您的需求?爲什麼分開詢問您是否可以分配空間(保留它)和實際使用內存空間? – dlamotte 2010-05-06 16:18:12
它看起來像定期撥款應該工作正常。如果不使用內存,它將被換出,並且,當你開始使用它時,它將被帶回到mmeory – Drakosha 2010-05-06 16:29:37
@xyld:一個從虛擬地址空間中扣除塊,另一個從虛擬內存中扣除它(頁面文件)。 – 2010-05-06 17:02:45