“%Z”解析在c ++中给出了错误,因为访问违规是未处理的异常?

时间:2012-02-10 12:15:21

标签: c++

代码如下。

当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;
}

感谢。

1 个答案:

答案 0 :(得分:0)

通常,占位符之间的任何形式的printf(如%Z)和实际参数之间的不匹配都会导致此类问题。因为这个原因,我停止使用printf,这是不安全的。更改参数类型时,很容易忘记更改占位符。 iostream等价物更加安全。如果你必须使用printf,请确保无论什么参数匹配你的%Z与预期的兼容。通常情况下,lint会为您检查这一点,以便在可能的情况下使用lint代码。