Я использую 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
в этом случае
Кто-нибудь сталкивался с этой проблемой и может мне помочь?
Я попытался отладить прогу, но получил следующую ошибку Необработанное исключение в Prog.exe(MSVCRTD.DLL):0xC0000005: Access voilation
Данные передаются аргументом для этой программы, и это недействительно *
Дополнительная информация:
Я попытался отладить адаптер кода, который дает сбой в следующей области, эта функция присутствует в 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