是否有可能在C/C++程序中为特定数组分配虚拟内存(交换空间),以便程序继续使用RAM作为其余变量,也许在某些类型的问题上获得一些好处?分配内存之前虚拟内存
1
A
回答
9
对于第一部分:在几乎每一个现代操作系统中,都有一种将文件映射到内存位置的方法。你可以这样做,并使用该文件作为你描述的“交换空间”。 POSIX标准定义了mmap
(可通过Linux和Mac OS使用),Windows有MapViewOfFile。
对于第二部分:它很大程度上取决于您遇到的问题类型。机会只会让访问阵列的速度变慢(比如“可笑的变慢”)并且没有任何帮助,除非它是一个庞大的阵列,并且您正在寻找一种通过将内容外包到硬盘驱动器来节省内存的方法。通常情况下,你的操作系统会自己分配交换空间并按照它认为合适的方式处理交换空间,所以明确地使用文件作为额外的内存对于我来说看起来不是一个好的解决方案。
1
您应该允许操作系统来处理该问题。如果你决定在磁盘上“分配”空间,访问你的数组将非常慢,并且考虑到数组可能是非常大的操作,这将需要永久。目前所有的操作系统都应该支持自动将程序内存放入交换区或页面文件中。如果你对性能没有兴趣,你可以在“内存”中创建自己的数组,但是我会建议你不要在运行时在程序中发生某些事情,否则这可能不会被清理干净,并可能导致更多问题。
相关问题
- 1. 虚拟内存
- 2. 虚拟内存?
- 3. 虚拟内存到物理内存
- 4. C:提前分配内存还是每次分配内存?
- 5. 虚拟内存空间
- 6. 访问linux虚拟内存
- 7. 虚拟内存大小
- 8. Excel虚拟内存问题
- 9. 探索虚拟内存(ProcessWalker)
- 10. mongodb虚拟内存大小
- 11. 关于虚拟内存
- 12. Pytables vs虚拟内存
- 13. Linux上的虚拟内存
- 14. 什么是虚拟内存?
- 15. gdb:虚拟内存耗尽
- 16. 虚拟内存和sbrk
- 17. 需要虚拟内存吗?
- 18. 虚拟内核内存布局:负值
- 19. 为什么用malloc分配的虚拟内存没有发布?
- 20. iOS:识别虚拟内存分配的来源
- 21. iOS上的虚拟内存使用率高+分配不足
- 22. 内存分配
- 23. 内存分配
- 24. 内存分配
- 25. 内存分配
- 26. 内存分配
- 27. 内存分配
- 28. 内存分配
- 29. 内存分配
- 30. 分配内存
你有什么具体的担心?通常,操作系统和默认的分配器处理事情(包括大事情:)就好了。 – 2010-10-22 16:21:29
我有一个程序处理二叉树,非常大的程序,并生成格式化为字符串(符号数学)的数学表达式,这些表达式添加到一个大数组中,但是在添加过程中,我需要将它们放在正确的位置,像如果它是一个矩阵。 – labotsirc 2010-10-22 17:13:27