2016-12-20 1 views
0

が、私はそれが正常に実行され、それがbad_allocを言って終わりで終了何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; 
} 

を次のように無限ループのためのプログラムを書いて、常に割り当てられた新しいメモリ。

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倍の配列を割り当てています。書かれているように、使用可能なメモリをすべて使用している場合を除いて、プログラムはそれ自身で終了しません。

初期値が不足しているため、コンソールウィンドウのディスプレイバッファからスクロールしている可能性があります。

関連する問題