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 и посмотрите, касаетесь ли вы какой-либо памяти, которая не принадлежит вам, или используете неинициализированные данные и т. Д.

Другие вопросы по тегам