私はこのコンパイルした場合:999999999セルの配列を割り当てます。 C++
long double *N;
N = new long double[999999999];
を、私はこのエラーを取得する:
error C2148: total size of array must not exceed 0x7fffffff bytes
だから、私はこれをコンパイルしてみました:
long double *N;
long double *N2;
N = new long double[999999999];
N2 = N + 99999999;
N2 = new long double[900000000];
私はまだプログラムを実行していませんでした、しかし私は確かに私がheap corruption detected
エラーを取得すると確信しています。なぜなら、Nでナビゲートしたいし、特定のポイントでN2でナビゲートしたくないからです。
1つのポインタでこれを行うのはなぜ安全ですか?
あまり記憶がありますか?また、エラーC2148を取得するには、MSVCの古いバージョンを使用している必要があります。 – Mysticial
私はMSVC 2008を使用しています – Jonas
これはコンパイラ、アーキテクチャ(X86 32ビットまたはx86-64 64ビット?)、およびシステムに依存します。だからあなたは答えを得るためにはるかに細かいことが必要です。しかし、コンパイラはおそらく正しいでしょう:あなたのマシンに10億倍を割り当てる方法はありません(8Gバイトを食べる必要があります。十分なRAMがあるでしょうか?) –