リストのサイズを変更しようとすると、プログラムがクラッシュします...そのコードを見て、1,000,000,000(10^9)を入力してください... 7 x64 doesnt作業。C++ STLリストが1以上の数字でクラッシュする000 000 000
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
int main(int argc, char *argv[])
{
list<long long> l;
long long n;
cin>>n;
cout<<l.max_size()<<endl;
//uncomment 1 or 2
//l.resize(n,l.size()+1); //1st try
/*for (long long i=0; i<n; i++) //2nd try
l.push_back(n);*/
//system("PAUSE"); // uncomment if needed
return 0;
}
"使用可能なメモリが" やや気まぐれな概念ですので、最大サイズは、l.max_size()
戻り9^10 * 4を超えているが、最新のMinGW(G ++)を使用して、まだdoesntの仕事...イム
10^9リスト要素でどれくらいのメモリを消費していると思いますか?たとえそれが単純な二重リンクリストであったとしても、2つのポインタ(2 x 8バイト)+値(別の8バイト)(すべての要素につき)は約24GBのメモリを必要とします。また、実装では、要素あたりの2x8Byte +データ型のサイズ以上のものを必要とすることもあります。 – Nobody
'1000000000 * sizeof(long long)'はおそらくあなたのコンピュータが利用可能なRAMのバイト数より多いでしょう。 [RAMをさらにダウンロードする](http://www.downloadmoreram.com/)を試してみてください。 –
なぜクラッシュするのですか?あなたは思い出に残っていますか? OSは、あなたのプログラムに2^64バイトを持つことを許可する必要はありません。実際には、64ビットシステムでさえもです。 – amit