私はVC 6.0で作業しています。私のプロジェクトは Unicode でコンパイルされています。UTF-8 文字列を含むファイルを膨張させるために zlib 1.1.3 を使用しています。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: アクセス違反。
この関数を使用しているときに上記のエラーが多く発生するため、メモリ リークまたは参照されているポインタが間違っていると思われます。私のテストでは、ヒープを使用しない場合でも、ヒープが適切に形成され、破損していないことが示されています。
この問題に対するより良い実装を提案していただけますか?