gal*_*tte 4 c++ printf variadic-functions
我有以下功能:
void raiseError(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list
int size = vsnprintf(nullptr, 0, msg, ap);
std::vector<char> s(size+1, 0);
vsnprintf(s.data(), size, msg, ap);
va_end(ap);
errorString = std::string(s.data()));
}
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
raiseError("File not found in <%s> : <%s>", "a", "b" );
Run Code Online (Sandbox Code Playgroud)
第一个vsnprintf调用(计算最终字符串大小)返回正确的值27.但最后一个字符串是:
"<**A*>中找不到文件:"
程序启动时'*'字符是随机的.
此外,该程序在MinGW中工作,问题只出现在linux gcc上.
我的代码有什么问题?