教えてください。STLのコンテナをmap<int, vector>のように入れ子にした場合、
にメモリ確保エラーを検出したいのですが、
vectorの領域をどんどん使用していくプログラムを作った際に、mapの件数が複数個(4個以上で)ある場合に、try,catchでメモリ確保エラー(Can not allocate memory)を取得できません。
一体どのようにエラーを取得すればいいのでしょうか?
このとき(try,catchで取れなかった時)
カーネルエラー(kernel: Out of Memory: Killed process)が出ました。
(ちなみに、map件数を4個未満とした場合には、try,catchでエラー検出可能でした。おそらく、map件数については動作環境に依存するとは思いますが、、、)
コンパイラーと STL バージョンは何ですか?
ココで聞いている以上は VC++ だと思いますが...
VC++6 付属の Dinkumware STL の <vector> には、正しく要素数の拡張ができないバグがあります。
STLport http://www.stlport.org に乗り換えるか、
パッチを当てる http://dinkumware.com/vc_fixes.html 必要があります。
で、話が VC++7.1 だと上記の解説は全部無駄レスになるわけで、
最初から開発環境等をきっちり書け!ということになるわけです。
あれ?リンクがうまく貼れていない...
http://www.dinkumware.com/vc_fixes.html
http://www.stlport.org/
レスありがとうございます。
すいません。VC++掲示板ですが、開発環境はLinuxです。m(_ _)m
C++共通かとおもっていちおう書いてみた次第です(´-`).。oO
いやだから「コンパイラと STL バージョンは何」という質問にはまったく答えてくれないわけですね。
もう知らん。
gcc-2.9x のころのものは g++ 自体も STL もバグバグなので信頼できません。
gcc-3.4.1 にしませう。
VC++ に依存しないピュア C/C++ ならたとえば
http://forums.belution.com/ja/cpp
とかお勧め。
すんません。
スレッドモデル: posix
gcc バージョン 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
です。
http://forums.belution.com/ja/cpp
上記サイトあたってみます。
どうもです。
ツイート | ![]() |