- ベストアンサー
Cygwinについて
Cygwinについて教えていただきたいのですが、配列の数が一万個程度までなら実行することができるのですが、六万個作ると core dumped になってしまします。 なぜでしょうか? また、配列の数を一万個以上でも実行できるような方法があれば、どなたか教えて頂けないでしょうか?お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1)どのようにして配列を確保したのか 2)その配列の一要素のサイズ がわからないと回答のしようがありませんよ。 単純に(よくやりそうな間違いを)考えると、たとえば関数main内で double array[60000]; などとするようなことをすればcore dumpedするかもしれませんね。 (グローバル変数でも同じ) 巨大な配列は、ヒープメモリで確保します。 C言語なら、 double array[]; array = malloc(60000 * sizeof(double)); if (array == NULL) {fprintf(stderr, "Failed to allocate memory\n");return;}; という具合です。 C++ならば newを使ってください。
その他の回答 (2)
- sssohei
- ベストアンサー率33% (33/98)
静的な配列などは(auto 変数だっけな?)はたしか、(コンパイラがそのようなコードを自動的に仕込む訳ですが)起動時に有る程度のメモリ領域を確保し、そこから切り出したはずです。 そのため、静的に確保しようとしたものも、足りずに core dumpするんだったと思います(曖昧) malloc/new で動的確保した場合は利用可能なメモリを使い切るまでは大丈夫だと思います
- KojiS
- ベストアンサー率46% (145/312)
動的に確保するのでもだめでしょうか?もちろん配列ではなくなってしまいますが。 配列数があまりにも多い場合は、配列にしない事も考えた方が良いと思いますよ。 リスト構造とか、配列風に使えるようなメモリ管理とかを自分で実装してしまえば、いろいろ使えますしね。