代码之家  ›  专栏  ›  技术社区  ›  bdhar

避免“缓冲区溢出”C6386警告

  •  0
  • bdhar  · 技术社区  · 16 年前

    在我的代码中,我使用的是一个数组 xyz 10个物体。当我尝试使用这样的无符号int索引访问数组元素时: xyz[level] 我得到 'Buffer overrun “警告。从逻辑上讲,我确信这个水平不会超过10。如何避免这种警告?

    2 回复  |  直到 16 年前
        1
  •  9
  •   RichieHindle    16 年前

    我可能在这里教我的祖母吸蛋,但请记住,“水平不会超过10”对于10号的数组是错误的:

    char a[10];
    a[10] = '\0';  // Bug, and "Buffer Overrun" warning.
    
        2
  •  0
  •   mkluwe    16 年前

    你是吗 真正地 当然?直到现在我才得到这个警告。所以,重复检查。

    无论如何,您可以使用

    #pragma warning( disable: 6386 )
    

    预处理器指令。我通常把这个推到“pragma stack”中

    #pragma warning( push )
    #pragma warning( disable : 6386 )
    // Some code
    #pragma warning( pop )
    

    按建议 here .