2012-04-08 6 views
0

私は構造体で、リストを使用しようとしている私はこのように持っています。のstd ::リスト

実行時に 'titles = 0xcdcdcdcd'というデバッガの下を見て、_iterator = MS.titles.begin()を呼び出そうとするとメモリアクセス違反で失敗します。

私は間違っていますか?

答えて

1

0xcdcdcdcdは、MSコンパイラによって削除されたメモリをマークするために使用されます。

問題はstd::listではなく、削除されたオブジェクトへのポインタを使用している可能性があります。

+0

私の構造体が割り当てられているところにブレークポイントを設定しましたmystruct =(MS *)malloc(sizeof(MS));リストにはまだその値がありますが、何が間違っているのでしょうか? –

+2

'std :: list'を含む構造体は' malloc'を使って(簡単に)割り当てられません。リストコンストラクタが実行されるように 'new MS'を使うべきです。 –

+0

ああ、それはそれだった:)愚かな古い習慣。ありがとう、ボー! –

関連する問題