Fork me on GitHub

vsnprintf_s 崩溃及注意事项

void LogTrace(LogLevel lv, const char* format, ...)
{
	if (m_fnLog == nullptr)
	{
		return;
	}
	va_list ap;
	va_start(ap, format);
	char logbuff[1024]{};
	int n = vsnprintf_s(logbuff, sizeof(logbuff), format, ap);
	va_end(ap);
	if (n <= 0)
	{
		return;
	}
	m_fnLog(lv, logbuff);
}
实测,当格式化字符串的长度大于等于1024时,会崩溃。
改成:vsnprintf_s(logbuff, sizeof(logbuff)-1, format, ap)即可,会自动截断。

  

posted @ 2024-08-02 14:40  烟波--钓徒  阅读(129)  评论(0编辑  收藏  举报