lil*_*boo 1 c++ windows zlib visual-c++
我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
我的代码因这些错误而变得不稳定:1.检测到严重错误c0000374 2. w3wp.exe(NTDLL.DLL)中的第一次机会异常:0xC0000005:访问冲突.
我怀疑有内存泄漏或错误的指针被引用,因为在使用此函数时,我得到了很多上述错误.我的测试还表明,当我不使用它时,堆保持良好的形状而不会被破坏.
你能否建议更好地实现这个问题?
MultiByteToWideChar返回输出中的16位Unicode字符数- 而不是字节数.但是malloc需要字节数.您必须将字符数乘以字符的字节大小,否则您只需分配一半所需的字节数!
ptr = (WCHAR *)malloc(sizeof(WCHAR) * *pLen);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |