Один из ваших удаленных или бесплатных вызовов выполняется на уже освобожденной памяти. Просмотрите все ваши ручные освобождения памяти и проверьте, верны ли они (удалите подозрительные и посмотрите, не изменит ли это поведение).
В идеале, при использовании современного C ++ у вас должна быть небольшая потребность в явном создании новых и удалении или вообще не нужно их использовать (используйте стандартные указатели, предоставляемые std).
Относительно Qt, знайте, что Qt использует родительское дочернее владение. Вы должны удалять только «верхние» объекты (те, у которых нет «родительского» набора), Qt удалит все дочерние объекты удаленного объекта самостоятельно. то есть, если вы вручную разместили производный экземпляр QObject и каким-то образом связали его в иерархию QObject (добавьте дочерний элемент / установите родителя / и т. д.), непосредственное удаление этого объекта вызовет проблемы.