_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