我已經寫了一個程序運行在centOS下。我的內存+交換內存是16 GB。異常處理最大LIAM的RAM +交換內存
#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區域的內存分配,然後內存分配發生在交換內存。當交換內存已滿時,操作系統殺死編程。我應該使用哪種類型的執行處理,這使我的程序能夠充滿可用內存,因此不會被操作系統所殺。
XY問題?爲什麼你需要用完所有的記憶? – stefan 2013-05-03 10:51:22
注意:如果你的系統只剩下很少的空閒內存,異常處理本身可能不起作用,因爲「異常對象的內存以未指定的方式分配」[except.throw]/4。內存頁的堆棧通常只會在必要時被提交(另一個可能的問題),所以我認爲最好的辦法不是試圖佔用所有的內存。分配大塊也可能有幫助。 – dyp 2013-05-03 11:25:16