スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Releaseモードで強制終了するバグの原因が分かった!(その2)

この前、というか昨日のReleaseモードで
強制終了するバグの原因
が分かりました。

vectorのデストラクタは
明示的に呼ぶものではない
ようです。

全体の仕様を把握せずに、
必要なときに、それに該当する(と思われる)関数などをリファレンスから
引っ張ってきてる
という様な事をやってるから駄目なんですね。

とりあえず解決方法。
デストラクタの代わりに、
clear関数を呼び出す事で解決しました。
-----------------------------------
【改善前】 m_WordVec.~vector();
【改善後】 m_WordVec.clear();

-----------------------------------

【補足】
clear関数は、要素は削除されるものの、
内部で確保されているメモリ自体は開放しない
という関数です。

m_WordVec.reserve(100)とやっても、
vector配列の要素数自体は0のままというのと同じような感じですね。

ややこしいですが、要は
要素数 != 内部で確保されているメモリ という事。



とりあえず解決しましたが、(強制終了しなくなりましたが、)
また、どっかでヒープを破壊してたりする様な事が無いとも限らないので、
引き続き、注意しながら開発していきたいです。
スポンサーサイト

テーマ : 日記 - ジャンル : 日記

コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。