在用完RAM之前分配虚拟内存

lab*_*irc 2 c c++ memory virtual allocation

在C/C++程序中,是否有可能为特定数组分配虚拟内存(交换空间),以便程序继续使用RAM来处理其余变量,并且可能会在某些类型的问题上获得一些好处?

zne*_*eak 9

对于第一部分:几乎在每个现代操作系统中,都有一种将文件映射到内存位置的方法.您可以这样做并将该文件用作您描述的"交换空间".POSIX标准定义mmap(可通过Linux和Mac OS使用),Windows具有MapViewOfFile.

对于第二部分:它在很大程度上取决于您遇到的问题类型.有可能只是让你的数组访问速度变慢(如"慢得多")并没有任何帮助,除非它是一个巨大的数组,你正在寻找一种通过将内容外包到硬盘驱动器来节省内存的方法.通常情况下,您的操作系统会自行分配交换空间并在其认为合适的情况下处理它,因此明确使用文件作为额外内存对我来说似乎不是一个好的解决方案.