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:訪問衝突。
我懷疑有一個內存泄漏或被錯誤的指針被引用,因爲當使用這個函數時,我得到了很多上面提到的錯誤。我的測試還表明,當我不使用它時,堆保持良好的形狀而不會損壞。
你能否提出一個更好的實現來解決這個問題?