Я собрал Qt из исходников с помощью MSVC2008, так как это было рекомендовано во избежание проблем с несовместимостью. Однако у меня возникла проблема при использовании функций Qt, которые возвращают объекты QList.
QList<QNetworkInterface> *netInterfaces = new QList<QNetworkInterface>;
*netInterfaces = QNetworkInterface::allInterfaces();
delete netInterfaces;
Этот код всегда будет давать сбой при удалении сетевых интерфейсов в free.c при попытке освободить память. В нем говорится, что куча повреждена, и я понятия не имею, почему, поскольку все было скомпилировано с одной и той же версией MSVC.
Это происходит для всех функций Qt, которые возвращают объекты QList, даже когда я просто вызываю функцию:
QNetworkInterface::allInterfaces();
С приведенным выше кодом приложение всегда будет немедленно падать при попытке освободить кучу, выделенную Qt. Странно то, что это происходит только со сборкой отладки. Релизная сборка работает нормально, без сбоев.
Мой Qt 4.8.0 был скомпилирован с /MT (многопоточный), и я динамически связываюсь с библиотекой. Мое приложение также скомпилировано как многопоточное.
Кто-нибудь знает, что может быть возможной причиной проблемы здесь?