我正在使用 VC 6.0。我的项目是用 Unicode 编译的。我正在使用 zlib 1.1.3 来扩充包含我的 UTF-8 字符串的文件。我以 ASCII 格式获取它,但我保证它都是英文的,所以我可以将它作为 UTF8 字符串关联起来(可以吗?)。
我在Codeproject中使用了以下建议的功能:
WCHAR* SMUUTF8toUTF16(LPCSTR utf8, int* pLen)
{
WCHAR *ptr = NULL;
*pLen = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
if (*pLen>1)
{
ptr = (WCHAR*)malloc(*pLen);
if (ptr)
{
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, ptr, *pLen);
}
}
return ptr;
}
我的代码因以下错误而变得不稳定:1. 检测到严重错误 c0000374 2. w3wp.exe (NTDLL.DLL) 中的第一次机会异常:0xC0000005:访问冲突。
我怀疑存在内存泄漏或引用了错误的指针,因为在使用此函数时,我遇到了很多上述错误。我的测试还表明,当我不使用它时,堆保持良好的格式并且没有损坏。
你能建议一个更好的解决这个问题的方法吗?