巨大なメモリ(数十MB)を動的に確保することは可能でしょうか? long **Data; try{ Data = new long *[4000]; for (int i = 0; i < 4000; i++){ Data[i] = new long [4000]; } } catch (bad_alloc) { cout <<, "割り当てができません。これで終了します。"; exit (-1); } とすると、特に異常なメッセージは出ません。 しかし、Data[i][j] に代入するとき、死にます。なぜでしょうか?
long **Data; int i; try{ Data = new long *[MAXCH+1]; for (i = 0; i < MAXCH+1; i++){ Data[i] = new long [MAXCH+1]; } } catch (bad_alloc) { for (int j = i-1; j <= 0; j--){ delete [] Data[j]; Data[j] = NULL; } delete [] Data; Data = NULL; cout << "割り当てができません。これで終了します。" << endl; exit (-1); }
>>138-140 プリプロセッサ・マクロを展開するとどうなるか考えてみる。 エラーの内容は'CClassA'が定義されてないことによるエラー 分割コンパイル関係ない(^^; //class A;class B;class C;//先に型が存在することを宣言しておく class A {     C o; }; class B {     A o; }; class C {     A o; };