非互換性の問題を回避するために推奨されていたため、MSVC2008 を使用してソースから Qt をビルドしました。ただし、QList オブジェクトを返す Qt 関数を使用するときに問題が発生します。
QList<QNetworkInterface> *netInterfaces = new QList<QNetworkInterface>;
*netInterfaces = QNetworkInterface::allInterfaces();
delete netInterfaces;
このコードは、メモリを解放しようとすると、free.c の「delete netInterfaces」で常にクラッシュします。すべてが同じバージョンの MSVC でコンパイルされているため、ヒープが破損していると表示されますが、その理由はわかりません。
関数を呼び出すだけでも、QList オブジェクトを返すすべての Qt 関数で発生します。
QNetworkInterface::allInterfaces();
上記のコードでは、Qt によって割り当てられたヒープを解放しようとすると、アプリケーションは常にすぐにクラッシュします。奇妙なことに、これはデバッグ ビルドでのみ発生します。リリース ビルドは、クラッシュすることなく正常に動作します。
Qt 4.8.0 は /MT (マルチスレッド) でコンパイルされており、ライブラリに動的にリンクしています。私のアプリケーションもマルチスレッドとしてコンパイルされています。
ここで問題の考えられる原因を知っている人はいますか?