2012-04-08 5 views
0

Я пытаюсь использовать список в структурах у меня так:станда :: список в структурах приводит к ошибкам нарушения памяти

typedef struct _MS 
{ 
    DWORD id; 
    std::list<std::wstring> titles; 
} MS; 

Но у меня возникают некоторые проблемы, когда я пытаюсь использовать его ,

Когда я смотрю на него под отладчиком во время выполнения 'titles = 0xcdcdcdcd', и когда я пытаюсь позвонить _iterator = MS.titles.begin(), он не работает с нарушением доступа к памяти.

Что я делаю неправильно?

ответ

1

Значение 0xcdcdcdcd используется компилятором MS для отметки удаленной памяти.

Ваша проблема, скорее всего, не с std::list, а с использованием указателя на удаленный объект.

+0

Я установил точку останова, где моя структура выделена mystruct = (MS *) malloc (sizeof (MS)); и список все еще имеет такое значение, что может быть неправильным? –

+2

Структуру, содержащую 'std :: list', нельзя (легко) выделять с помощью' malloc'. Вы должны использовать 'new MS', чтобы выполнялся конструктор списка. –

+0

Ах, вот и все :) Глупые старые привычки. Спасибо большое Бо! –

Смежные вопросы