当我在调试模式下运行我的游戏时,我得到一个缓冲区溢出崩溃 - callstack是bananas(看起来它被卡在递归循环中)但是我跟踪崩溃到以下函数:
std::wstring formatWstring(const wchar_t *first, ...)
{
wchar_t str[4096];
va_list marker;
va_start(marker, first);
vswprintf_s(str, sizeof(str), first, marker);
va_end(marker);
return str;
}
以下列方式调用:
std::wstring gmh = io::lexicon->getString("FE_gamemode_header");
std::wstring gms = io::lexicon->getString(formatString("FE_gamemode_%s", game->getCurrentMapGameMode().c_str()));
m_gameMode = formatWstring(L"%S: %S", gmh.c_str(), gms.c_str());
我似乎无法弄清楚这是怎么回事......任何线索?
答案 0 :(得分:2)
尝试将通话更改为
vswprintf_s(str, sizeof(str)/sizeof(wchar_t), first, marker);
您的操作尺寸错误。 wchar_t
没有保证char
的大小为1。