私は C++ の初心者なので、これは比較的単純な問題であると確信していますが、ヒープ破損の問題を追跡しようとしている従来の C++ アプリがあり、この関数に追跡しました。
void LTrimZeros(CString *pstr)
{
char *psz1;
char *psz2;
if ( pstr->GetLength() == 0 )
return;
psz1 = new char[pstr->GetLength() + 1];
psz2 = psz1;
strcpy_s( psz2, strlen(psz2), (const char *) *pstr );
while ( *psz2 == '0' )
{
psz2++;
}
*pstr = psz2;
delete [] psz1;
return;
}
削除しようとするpsz1
と、ヒープ破損エラーがスローされます。繰り返しますが、私は C++ にかなり慣れていないので、これを修正して誤ってメモリ リークを引き起こしたくなかったので、専門家に尋ねてみようと思いました。このアプリはもともと c++4 のように記述されていましたが、現在は c++11 にアップグレードされているため、同じ関数の代替ソリューションも問題ありません (これがヒープの破損を引き起こす理由の簡単な説明も非常に役立ちます)。