アプリケーションで memcpy を使用しています。memcpy はランダムにクラッシュします。以下は Dr.Watson ファイルで取得したログです。
100181b5 8bd1 mov edx,ecx
100181b7 c1e902 shr ecx,0x2
100181ba 8d7c030c lea edi,[ebx+eax+0xc]
100181be f3a5 rep movsd
100181c0 8bca mov ecx,edx
100181c2 83e103 and ecx,0x3
FAULT ->100181c5 f3a4 rep movsb ds:02a3b000=?? es:01b14e64=00
100181c7 ff1508450210 call dword ptr [Debug (10024508)]
100181cd 83c424 add esp,0x24
100181d0 6854580210 push 0x10025854
100181d5 ff1508450210 call dword ptr [Debug (10024508)]
100181db 83c404 add esp,0x4
以下はコードです
memcpy((char *)dep + (int)sizeof(EntryRec) + (int)adp->fileHdr.keySize, data, dataSize );
どこ:
- dep は構造体です
- EntryRec は文字ポインタです
- adp は構造体です
- データは
NULL
この場合ではありません
誰かがこの問題に直面していて、私を助けることができますか?
私はプログラムをデバッグしようとしましたが、次のエラーが発生しました。
データはこのプログラムの引数に渡され、これは void* です
詳細情報:
コード アダプターをデバッグしようとしましたが、次の領域でクラッシュしています。この関数は OUTPUT.c にあります (これはライブラリ関数だと思います)。
#else /* _UNICODE */
if (flags & (FL_LONG|FL_WIDECHAR)) {
if (text.wz == NULL) /* NULL passed, use special string */
text.wz = __wnullstring;
bufferiswide = 1;
pwch = text.wz;
while ( i-- && *pwch )
++pwch;
textlen = pwch - text.wz;
/* textlen now contains length in wide chars */
} else {
if (text.sz == NULL) /* NULL passed, use special string */
text.sz = __nullstring;
p = text.sz;
while (i-- && *p) //Crash points here
++p;
textlen = p - text.sz; /* length of the string */
}
変数の値: p= ""(初期化されていない) i= 2147483598