簡體   English   中英

在調試模式下運行時緩沖區溢出

[英]Buffer overrun when running in debug mode

在調試模式下運行游戲時,我遇到緩沖區溢出崩潰-調用堆棧是香蕉(看起來像卡在了遞歸循環中),但是我將崩潰跟蹤到以下函數:

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

我似乎無法弄清楚到底是什么原因。

嘗試將呼叫更改為

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

您使用的尺寸錯誤。 wchar_t不保證char的大小為1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM