0

%d 書式指定子を使用して CString::Format 操作を実行すると、VC++ 6.0 アプリケーションがクラッシュします。これは常に発生するわけではありませんが、アプリケーション メモリが 100MB 以上になると発生します。また、CString のコピーが行われたときに、同じクラッシュが観察されることもあります。コールスタックは次のようになります

mfc42u!CFixedAlloc::Alloc+82

mfc42u!CString::AllocBuffer+3f 00000038 00000038 005b5b64

mfc42u!CString::AllocBeforeWrite+31 00000038 0a5bfdbc 005b5b64

mfc42u!CString::AssignCopy+13 00000038 057cb83f 0a5bfe90

mfc42u!CString::operator=+4b

これにより、アクセス違反の例外がスローされます。

4

2 に答える 2

0

これはおそらくそうではありませんが、最近、VS6 で小さなブロック ヒープを破損する reallocに関する既知の問題に遭遇しました。コードの他の場所に realloc (または realloc を使用する vector のようなものを使用) がある場合、表示されている問題が発生する可能性があります。

この問題を解決するには、realloc.c をハックするか、独自の realloc 関数を作成するか、コードで「_set_sbh_threshold(0)」を実行して、古い小さなブロック ヒープを無効にします。

于 2009-07-09T17:47:49.663 に答える