0

デバッグ モードでゲームを実行すると、バッファ オーバーラン クラッシュが発生します - コールスタックはバナナです (再帰ループでスタックしているように見えます) が、次の関数へのクラッシュを追跡しました:

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());

何がこれを爆破しているのか理解できないようです..手がかりはありますか?

4

1 に答える 1

2

呼び出しを変更してみてください

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

間違ったサイズで操作しています。のサイズが 1 であるという保証はwchar_tありません。char

于 2013-01-22T10:29:01.153 に答える