ページ 1 / 1
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の時に無限ループになって配列範囲外アクセスしませんか?
の存在意義も不明ですし、マルチスレッドのコードですか?
珈琲 さんが書きました: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++)
ああああああああなんじゃこりゃあああ
ありがとうございました・・・