ページ 11

std::vectorがメモリ違反エラーを起こす

Posted: 2013年7月27日(土) 19:56
by 珈琲
画像
for文の脱出条件を無視してスコープ内に入ってきてvectorがメモリ違反を起こすのですが、
なぜスコープ内に入ってくるのかわかりません。

画像は、iが1、PendingList.size()が1の時にのスコープ内に入ったこと(黄色い矢印)を示してます。
for(size_t i=0;i < PendingList.size();i++){}

このstd::vectorは毎フレーム.clearしては.pusu_backして使いまわしてるのですが、それが原因で、vector::size()が間違った値を返しているのでしょうか?

Re: std::vectorがメモリ違反エラーを起こす

Posted: 2013年7月27日(土) 19:59
by 珈琲
追記ですが、この画像の次のステップインでエラーを起こします。

画像

Re: std::vectorがメモリ違反エラーを起こす

Posted: 2013年7月27日(土) 20:01
by みけCAT
スコープ内に入ってくる、の意味が私にはわかりませんが、
これって、PendingList.size()>0の時に無限ループになって配列範囲外アクセスしませんか?

コード:

int t=0;
t++;
の存在意義も不明ですし、マルチスレッドのコードですか?
珈琲 さんが書きました:Expression: vector subscript out of range
はい、思いっきり範囲外アクセスしてますね。

Re: std::vectorがメモリ違反エラーを起こす

Posted: 2013年7月27日(土) 20:44
by 珈琲
あ、int t=0はブレークポイントとして指定したかったので意味のないコードを書きました。

Re: std::vectorがメモリ違反エラーを起こす

Posted: 2013年7月27日(土) 20:45
by 珈琲

コード:

for(size_t i = 0 ;0 < PendingList.size(); i++)
ああああああああなんじゃこりゃあああ









ありがとうございました・・・