_vsnprintf何时会崩溃?为什么_vsnprintf在windows崩溃
我用这样的:
void My_Printf(const char *szFormatString, ...)
{
va_list my_args;
va_start(my_args, szFormatString);
AppendToLog(szFormatString, my_args);
va_end(my_args);
}
static void AppendToLog(const char *szFormatString, va_list argptr)
{
char szLine[MAX_LENGTH_STRING] = {0};
if ((NULL != szFormatString) && (0 != strcmp(szFormatString, ""))) {
if (strlen(szFormatString) > MAX_LENGTH_STRING) {
return;
}
#ifdef WIN32
_vsnprintf(szLine, MAX_LENGTH_STRING-1, szFormatString, argptr);
#endif
...
}
和VC表明它被打破的!
_VALIDATE_RETURN((CH = _T( '\ 0')),EINVAL,-1 ); (output.c)
我不知道为什么。
根据MSND,它应该返回一个值,不管它是否正常。
发表你的整个代码,我们不是通灵。什么是'szFormatString'和'argptr'? – 2011-05-10 04:02:20
首先检查:'szLine'实际上是指向MAX_LENGTH_STRING字符缓冲区的指针吗? – 2011-05-10 04:05:29
你是如何创建va_list函数参数的? – 2011-05-10 07:43:11