Есть дека, в которой хранятся указатели на стуктуры.
struct LItem
{
};
deque <LItem*> deq;
где то в программе
LItem* li = new LItem;
...
deq.push_back (li); // запоминаю копию указателя на структуру
Потом по таймеру происходит следуюее
// берем ссылку на первый элемент
LItem* item = qItemsToUpdate.front();
// проводим с ним какие то действия
// удаляем первый элемент (не саму структуру удаляем а просто указатель на нее) Сама структура используется в другом месте
qItemsToUpdate.pop_front();
// если еще есть элементы
if (!qItemsToUpdate.empty())
{
// берем опять первый элемент
item = qItemsToUpdate.front();
if (item)
{
UINT iNewTime = item->dt.wMilliseconds — d.wMilliseconds;
uiTimer = SetTimer (100, iNewTime, NULL);
}
}
else
{
KillTimer (100);
uiTimer = 0;
}
в выделенном месте вылетает аксес виолейшн (!). Смотрю на дебаге и вижу что переменная item имеет какой то адрес, но все поля структуры имеют значение Expression can not be evaluated.
из за чего это может быть?