2012-04-08 2 views
0

내가 구조체의 목록을 사용하기 위해 노력하고있어 나는이 같은이 .표준 : : 목록

런타임에 'titles = 0xcdcdcdcd'디버거에서 볼 때 _iterator = MS.titles.begin()을 호출하려고하면 메모리 액세스 위반으로 실패합니다.

내가 뭘 잘못하고 있니?

답변

1

0xcdcdcdcd은 MS 컴파일러에서 삭제 된 메모리를 표시하는 데 사용됩니다.

문제는 std::list이 아니지만 삭제 된 개체에 대한 포인터를 사용하는 것과 같습니다.

+0

내 구조체가 할당 된 곳에서 중단 점을 설정했습니다. mystruct = (MS *) malloc (sizeof (MS)); 목록에는 여전히 그 가치가 있습니다. 무엇이 잘못 될 수 있습니까? –

+2

'std :: list '를 포함하고있는 구조체는 (쉽게)'malloc'을 사용하여 할당 될 수 없습니다. 리스트 생성자가 실행되도록'new MS'를 사용해야합니다. –

+0

아, 그게 다예요. 어리석은 옛날 습관. 고마워 Bo! –

관련 문제