スポンサーサイト

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

またReleaseモードで強制終了するバグががg(´・ω・`)

えーと、現在 
またReleaseモードでのみ強制終了をするバグに遭遇しました。

発生箇所は特定できました。
STLのvectorのデストラクタを呼んだ時に壊れます。
---------------------
m_WordVec.~vector();
---------------------

うーなんでだ?
"Releaseモードのデバッグモード"では、
以下の赤字のコードで壊れることを確認しました。
※vectorの内部コード。
iterator insert(const_iterator _Where, const _Ty& _Val)
{ // insert _Val at _Where
size_type _Off = size() == 0 ? 0 : _Where - begin();
_Insert_n(_Where, (size_type)1, _Val);
return (begin() + _Off);
}

begin関数が失敗してるのかな?

とりあえず、要約すると以下のようなコードになっているので、
単純にメモリの確保とかで失敗してる?のかもしれない。
-------------------------
m_WordVec.push_back(t);
m_WordVec.~vector();
m_WordVec.push_back(t);
m_WordVec.~vector();
m_WordVec.push_back(t);
m_WordVec.~vector();

-------------------------
結局よく分からないのでもう少し調べてみます。
んーーなんだこれ。
スポンサーサイト

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

コメント

No title

~ClassName のメソッドはデストラクターで明示的に呼ぶ物ではないらしいです
ちなみにそれはそのインスタンスを開放するメソッドです

No title

ありがとうございます!
根本的な使い方を間違っていたんですね・・・v-292

自分も再度、vectorのリファレンスを調べてみたんですが、
clear()という関数で対応できるようです。

STLとか、その他DirectXの関数群など、
必要なときに、それらしき関数を調べてきて使ってるみたいな状態なので、
もっと関数の仕様などを把握しないといけないですねv-404

ともかく、ありがとうございました!v-411
コメントの投稿
管理者にだけ表示を許可する



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