Переполнение буфера при работе в режиме отладки

При запуске нашей игры в режиме отладки я получаю аварийное завершение переполнения буфера — callstack — это бананы (похоже, он застрял в рекурсивном цикле), однако я отслеживал аварийное завершение работы следующей функции:

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

Решение

Попробуйте изменить вызов на

vswprintf_s(str, sizeof(str)/sizeof(wchar_t), first, marker);

Вы работаете с неправильным размером. wchar_t не имеет charгарантированно будет размером 1.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]