是否有可能在C/C++程序中爲特定數組分配虛擬內存(交換空間),以便程序繼續使用RAM作爲其餘變量,也許在某些類型的問題上獲得一些好處?分配內存之前虛擬內存
1
A
回答
9
對於第一部分:在幾乎每一個現代操作系統中,都有一種將文件映射到內存位置的方法。你可以這樣做,並使用該文件作爲你描述的「交換空間」。 POSIX標準定義了mmap
(可通過Linux和Mac OS使用),Windows有MapViewOfFile。
對於第二部分:它很大程度上取決於您遇到的問題類型。機會只會讓訪問陣列的速度變慢(比如「可笑的變慢」)並且沒有任何幫助,除非它是一個龐大的陣列,並且您正在尋找一種通過將內容外包到硬盤驅動器來節省內存的方法。通常情況下,你的操作系統會自己分配交換空間並按照它認爲合適的方式處理交換空間,所以明確地使用文件作爲額外的內存對於我來說看起來不是一個好的解決方案。
1
您應該允許操作系統來處理該問題。如果你決定在磁盤上「分配」空間,訪問你的數組將非常慢,並且考慮到數組可能是非常大的操作,這將需要永久。目前所有的操作系統都應該支持自動將程序內存放入交換區或頁面文件中。如果你對性能沒有興趣,你可以在「內存」中創建自己的數組,但是我會建議你不要在運行時在程序中發生某些事情,否則這可能不會被清理乾淨,並可能導致更多問題。
相關問題
- 1. 虛擬內存分配沒有物理內存分配
- 2. c#爲虛擬機分配內存
- 3. 分配給進程的虛擬內存
- 4. 虛擬內存
- 5. 虛擬內存?
- 6. 虛擬內存耗盡:無法分配內存8 gb ram
- 7. 虛擬內存到物理內存
- 8. 物理內存與虛擬內存
- 9. 虛擬內存或物理內存
- 10. C:提前分配內存還是每次分配內存?
- 11. 清理部分虛擬內存?
- 12. Excel虛擬內存問題
- 13. 虛擬內存處理
- 14. gdb:虛擬內存耗盡
- 15. 虛擬內存和sbrk
- 16. Linux上的虛擬內存
- 17. Android支持虛擬內存
- 18. mongodb虛擬內存大小
- 19. 需要虛擬內存嗎?
- 20. Memcached和虛擬內存
- 21. 什麼是虛擬內存?
- 22. 訪問linux虛擬內存
- 23. cc1plus:虛擬內存耗盡
- 24. 關於虛擬內存
- 25. Pytables vs虛擬內存
- 26. 虛擬內存的使用
- 27. 虛擬內存大小
- 28. Flash虛擬內存改進
- 29. 虛擬內存空間
- 30. 探索虛擬內存(ProcessWalker)
你有什麼具體的擔心?通常,操作系統和默認的分配器處理事情(包括大事情:)就好了。 – 2010-10-22 16:21:29
我有一個程序處理二叉樹,非常大的程序,並生成格式化爲字符串(符號數學)的數學表達式,這些表達式添加到一個大數組中,但是在添加過程中,我需要將它們放在正確的位置,像如果它是一個矩陣。 – labotsirc 2010-10-22 17:13:27