在Unicode字符集项目的函数中访问冲突写入位置

时间:2016-04-11 06:46:18

标签: c++ visual-studio-2005

我的项目从多字节字符集项目更改为unicode字符集。因此,需要转换许多变量类型以匹配参数类型。我创建了一个将char[]类型转换为LPWSTR的函数。以下是代码:

LPWSTR CharFunction::CharToLPWSTR(char charVariable[])
{
    LPWSTR returnVariable;
    MultiByteToWideChar(CP_UTF8, 0, charVariable, -1, returnVariable, 2048);
    return returnVariable;
}

然而,还有

  

xxxx.exe中0x77a9007e处的未处理异常:0xC0000005:访问冲突写入位置0x7712311e。

我发现它可以第一次运行,但错误发生在第二次

MultiByteToWideChar(CP_UTF8, 0, charVariable, -1, returnVariable, 2048);

我花了3个小时来调试,但没有运气。如果有人能帮我修复这个bug,我将不胜感激。谢谢。

更新

下面是声明变量并将值传递给函数的代码片段。

LPWSTR        g_szSystemIni;
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
_splitpath_s(szModuleName_converted, drive, _MAX_DRIVE, dir, _MAX_DIR, fname, _MAX_FNAME, ext, _MAX_EXT );
lstrcpy(g_szSystemIni,charfunction.CharToLPWSTR(drive));
lstrcat(g_szSystemIni,charfunction.CharToLPWSTR(dir));

0 个答案:

没有答案