QSharedPointer Неверный адрес, указанный для RtlFreeHeap
У меня есть программа, которая интенсивно использует QSharedPointer
, Когда я выполняю свою программу, она работает нормально, но когда я отлаживаю ее с помощью GDB, она начинает выдавать ошибки. "Invalid Address specified to RtlFreeHeap"
бросается в следующем коде:
QSharedPointer<PersistentList> p =
PersistentList::createEx(wrap("abc")).dynamicCast<PersistentList>();
QSharedPointer<IPersistentCollection> c = p->empty(); // Error thrown after this line
QSharedPointer<IPersistentCollection> ASeq::empty()
{
return QSharedPointer<EmptyList>(new EmptyList());
}
Если я отключу p->empty()
линия программа работает просто отлично. Есть идеи?
1 ответ
Проблема, вероятно, в другом месте вашего кода. Запустите его под Valgrind и посмотрите, касаетесь ли вы какой-либо памяти, которая не принадлежит вам, или используете неинициализированные данные и т. Д.