代码如下。
当LogToMyFile("%Z)错误在_vstprintf处引发并崩溃应用程序时。请帮忙。
void LogToMyFile(LPCTSTR pFormat, ...)
{
TCHAR chMsg[2048];
LPTSTR lpszStrings[1];
va_list pArg;
va_start(pArg, pFormat);
_vstprintf(chMsg, pFormat, pArg);
va_end(pArg);
lpszStrings[0] = chMsg;
}
感谢。
答案 0 :(得分:0)
通常,占位符之间的任何形式的printf(如%Z)和实际参数之间的不匹配都会导致此类问题。因为这个原因,我停止使用printf,这是不安全的。更改参数类型时,很容易忘记更改占位符。 iostream等价物更加安全。如果你必须使用printf,请确保无论什么参数匹配你的%Z与预期的兼容。通常情况下,lint会为您检查这一点,以便在可能的情况下使用lint代码。