C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: mapのメモリ確保について


(過去ログ 56 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■32052 / inTopicNo.1)  mapのメモリ確保について
  
□投稿者/ シープラザ (20回)-(2009/01/30(Fri) 22:15:45)

分類:[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というエラーになる事もあります。
一度目の処理と二度目の処理はロジック的にはまったく同じ動きをしています。

以上、宜しくお願いします。
引用返信 編集キー/
■32057 / inTopicNo.2)  Re[1]: mapのメモリ確保について
□投稿者/ 774RR (307回)-(2009/01/30(Fri) 22:41:50)
単純に誰かがどこかでメモリぶっ壊しているだけだと見た。
map がうまく動かなく見えるのは、メモリがぶっ壊れている結果に過ぎない。
引用返信 編集キー/
■32062 / inTopicNo.3)  Re[2]: mapのメモリ確保について
□投稿者/ επιστημη (1629回)-(2009/01/30(Fri) 23:13:57)
επιστημη さんの Web サイト
> 単純に誰かがどこかでメモリぶっ壊しているだけだと見た。

んむ。グローバル変数があやしい(きっと)。
引用返信 編集キー/
■32063 / inTopicNo.4)  Re[1]: mapのメモリ確保について
□投稿者/ επιστημη (1630回)-(2009/01/30(Fri) 23:15:42)
επιστημη さんの Web サイト
> ■mapのあるkeyが存在するかをチェック
>  aaaというmapにbbbというkeyが存在するか確認するには
> if(aaa[bbb] != "")
> {
> cout << "Exist!" << endl;
> }
> では駄目ですか? ※aaaは全てのkeyに必ず""以外の値を持つ前提として。

if ( aaa.find(bbb) != aaa.end() ) がbetter.
aaa[bbb] だと不要なインスタンスが作られる。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -