我已经使用 MSVC2008 从源代码构建了 Qt,因为建议避免任何不兼容问题。我在使用返回 QList 对象的 Qt 函数时遇到了问题。
QList<QNetworkInterface> *netInterfaces = new QList<QNetworkInterface>;
*netInterfaces = QNetworkInterface::allInterfaces();
delete netInterfaces;
尝试释放内存时,此代码将始终在 free.c 中的“删除 netInterfaces”上崩溃。它指出堆已损坏,我不知道为什么,因为所有内容都是使用相同版本的 MSVC 编译的。
即使我只是调用函数,它也会发生在所有返回 QList 对象的 Qt 函数中:
QNetworkInterface::allInterfaces();
使用上面的代码,当试图释放 Qt 分配的堆时,应用程序总是会立即崩溃。奇怪的是,这只发生在 Debug 版本中。发布构建工作正常,没有任何崩溃。
我的 Qt 4.8.0 是用 /MT(多线程)编译的,我动态链接到库。我的应用程序也被编译为多线程。
有谁知道这里问题的可能原因是什么?