我試圖獲取C++內存管理的掛件,並試圖故意使用無限循環的新語句崩潰我的程序。據我所知,這只是在記憶堆上留出越來越多的空間。但是我的程序不會崩潰。在Windows任務管理器中進行監控時,它會消耗大約6GB的內存,然後降至5GB,再次升至6GB等。如何(故意)導致程序崩潰在C++中使用新
與此同時,我的硬盤正在快速充滿。在分配大約30GB後我停止了測試,因爲我不想對SSD造成太大的壓力。
現在,我有8GB的RAM,並根據Windows設置,「虛擬內存大小」(我猜這是交換,對吧?)約爲1.5GB。 但是我能夠分配的不僅僅是這些。什麼決定了該計劃是否會最終崩潰?它使用了什麼內存?
謝謝!
#include <iostream>
using namespace std;
int main() {
long alloced = 0;
while (true) {
double *d = new double[12500000];
alloced += 1;
cout << alloced << " times 100MB" << endl;
}
return 0;
}
它不會粉碎,分配將失敗,指針d將得到一個'nullptr'。 – SHR
在我的系統上分配了64+ GB(可能是Windows許可證的限制)後發生了奇怪的事情。你只是不夠執着。 :-) –
@SHR在考慮David的提示後,我還爲'std :: bad_alloc'添加了一個try/catch塊來捕獲程序何時會耗盡內存。看到我的評論下面他的回覆更多信息。 –