3
我正在使用VC 6.0。我的项目是用Unicode编译的。我正在使用zlib 1.1.3来扩充包含我的UTF-8字符串的文件。我得到它在ASCII,但我有一个保证,它是全英文,所以我可以把它作为一个UTF8字符串(我可以吗?)。将一个UTF8字符串转换为一个UTF16字符串在c + +
我已经使用建议的功能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.检测w3wp.exe的c0000374 2.第一次机会异常严重错误(NTDLL .DLL):0xC0000005:访问冲突。
我怀疑有一个内存泄漏或被错误的指针被引用,因为当使用这个函数时,我得到了很多上面提到的错误。我的测试还表明,当我不使用它时,堆保持良好的形状而不会损坏。
你能否提出一个更好的实现来解决这个问题?