いくつかの大きな配列を宣言し、要素などを操作するようにコーディングしています.
コードが一時配列を宣言する 1 つのセクションに到達すると、約 1.8m の列を作成した後に bad_alloc をスローします。
コードは次のとおりです。
int** tempArray1= new int*[PHLengths[n-1]];
for(int i =0;i<PHLengths[n-1];i++) {
tempArray1[i]=new int[PrimeDatL];
}
PrimeDatL ~417 および PHLengths[n-1]~3630140 と見なされる場合。
通常、これは十分な RAM がないことが原因であると想定します (たまたま、現在定義されているように不足しているため、動的配列を宣言し、途中で塗りつぶし/拡張することができます)。ただし、コンピューターのリソースを監視すると、約3GB / 5GBになり、エラーが発生します。
ここでの微妙な点は、virtualboxでubuntuを使用しているため、メモリアドレスの問題が発生する可能性があることです? このエラーは、RAM が完全に不足している場合にのみ発生すると考えるのは単純ですか?
また、プログラムの早い段階で宣言して、途中でメモリの問題が発生したかどうかを確認しました。同じ問題です。