2016-12-20 69 views
0

我寫了一個程序的無限循環如下不斷分配新的內存是什麼bad_alloc的?爲什麼輸出屏幕不顯示所有的值

#include<iostream> 
using namespace std; 
int main() 
{ 
    for (int i = 0; ; ++i) 
    { 
     double* x = new double[2000]; 
     *x = i * 2.5; 
     cout << i <<" "<< *x << endl; 
    } 

    return 0; 
} 

它成功運行,並且它在最後說bad_alloc的結束。

133415 333538 
terminate called after throwing an instance of 'std::bad_alloc' 
    what(): std::bad_alloc 

我認爲這表明沒有更多的內存。 請告訴我是否認爲是正確的。 並且輸出屏幕也不顯示從零開始的所有值,而是從133125開始。 爲什麼會這樣?

+0

_它按照你的要求成功運行了嗎? – Tas

+0

是的,我的主要目的是檢查,當內存分配停止....所以它停在133415,但我只是問了錯誤的含義,爲什麼輸出屏幕不顯示從零的值,而是133125 ... .. – fleshbender

+0

只是想增加我的知識.....不知道人們受到傷害,而這樣做:P .... – fleshbender

回答

6

是的,你用完了內存。您目前正在無限循環的每次迭代中分配一個新的2000雙精度數組。正如所寫,您的程序不會自行結束,除非它使用所有可用內存。

至於缺乏早期值,我懷疑他們正在滾動出您的控制檯窗口的顯示緩衝區。

相關問題