我有一个 mbstowcs() 不能正常工作:
mbstowcs(pParams->strDstFile, parParams->DstFile, sizeof(parParams->DstFile));
调试时的参数值是:
pParams->strDstFile = 0x0018e70c
parParams->DstFile = 121 long null terminated string.
sizeof(parParams->DstFile) = 1024
参数类型是:
TCHAR strDstFile[2048];
char DstFile[1024];
在进入 mbstowcs(wchar_t *pwcs, const char *s, size_t n) 之后:
wchar_t *pwcs = 0x0018ef0c
这与发送的值不同。这会导致上述调用出现故障。
ps 在另一个函数调用中,和这个几乎一样,唯一的区别是第一个参数(pwcs)不同,没有问题。
该应用程序的连续运行给出了相同的结果,具有完全相同的地址值。
在查看另一篇文章时,它似乎是一个悬空指针/缓冲区溢出,尽管我无法使用内存断点跟踪它。
我在想也许是堆栈损坏?
谢谢大家。