ブックマーク / www.himajin2001.com (1)

  • 技術的雑談-ポインタ配列、vectorの落とし穴 - Tsubasa's HomePage

    ポインタを配列やvectorで管理している時にSIGSEGV(不正アクセス)発生 vectorの末尾方面に入っているポインタ変数をdeleteした時に、プログラム終了時に不正アクセス。 vector実体をコピーしたのに中身にアクセスすると不正アクセス。 原因 同じクラスの複数のインスタンスをvectorや配列に入れて管理する事はよくある話で、SIGSEGVで墜ちるのもよくある話なので、その原因のヒントをば。 ポインタ配列は主にCで使う話なので今回はvectorで。 往々にしてこんなコードを書いてしまったりします。 std::vector<Hoge*> vecHoge; …… Hoge* pPointer = new Hoge(); // Hogeの新しいインスタンスの作製 vecHoge.push_back(pPointer); // vectorの最後に今作ったHogeインスタンスを追加

    hhc0null
    hhc0null 2014/01/02
    C++, vectorの罠
  • 1