我写了一个在 centOS 下运行的 prog。我的 ram +swap 内存为 16 GB。
#include <iostream>
#include <list>
#include<cstdlib>
#include<new>
#include <exception>
using namespace std;
int main ()
{
std::list<double> mylist;
double i;
try{
for (double i=1; i<=250000000; ++i) mylist.push_back(i);
}
catch (std::bad_exception& ba) {
cout << "Allocation failure: " << ba.what() << endl;
mylist.clear();
exit(1);
}
mylist.clear();
// std::cout << "mylist contains:";
// for (it=mylist.begin(); it!=mylist.end(); ++it)
// std::cout << ' ' << *it;
// std::cout << '\n';
return 0;
}
我的问题是当程序运行并跨越 RAM 区域的内存分配时,内存分配发生在交换内存中。当交换内存已满时,操作系统会终止 prog。我应该使用什么类型的执行处理使我的程序填满可用内存,因此不会被操作系统杀死。