|
分類:[C/C++]
WinXPにてVC(2003)を勉強中の初心者です。
宜しくお願いします。
あるロジックの中でmap<string, string>という形で変数を宣言しています。 一度目の動作では問題なく動きますが、システムを終了しないまま再度そのロジックを走らせるとエラーで落ちてしまいます。 一度目で上手くメモリの解放が出来ていないのだと思います。
そこで2点質問させてください。 ■mapのあるkeyが存在するかをチェック aaaというmapにbbbというkeyが存在するか確認するには if(aaa[bbb] != "") { cout << "Exist!" << endl; } では駄目ですか? ※aaaは全てのkeyに必ず""以外の値を持つ前提として。
■mapのメモリ解放 mapは自動でデストラクタされると思い込んでいるのですが違うのでしょうか? new宣言をせずに使った変数を、処理の最後に.clear()と.eraze(aaa.begin(),aaa.end())と、無駄に削除しているのですが駄目でしょうか?
上記2点が原因ではないかと思っているのですが、一般的見解で他にパターンがありましたらご教授をお願いします。
エラーの内容は、 if(aaa[bbb] == "") のところで、bad_allocを返されます。 なぜか時々nomemoryというエラーになる事もあります。 一度目の処理と二度目の処理はロジック的にはまったく同じ動きをしています。
以上、宜しくお願いします。
|