cppcheck报告“缓冲区超出界限”

时间:2014-09-12 13:01:35

标签: memset boundary cppcheck

静态代码分析工具cppcheck在下面的代码中报告了一个严重错误:我不知道问题是什么。

      #define NUM_UPDATE_COUNT 3
      #define MAX_NUM_CH_1LINE 27

      wchar_t m_cCnt_Buf[NUM_UPDATE_COUNT][MAX_NUM_CH_1LINE];

      Init_PushPt();

      memset((char *)&m_cCnt_Buf[1], 0x20, sizeof(m_cCnt_Buf[1])); /* Buffer is accessed out of bounds: m_cCnt_Buf */
      memset((char *)&m_cCnt_Buf[2], 0x20, sizeof(m_cCnt_Buf[2])); /* Buffer is accessed out of bounds: m_cCnt_Buf */               
      m_cCnt_Buf[1][2] = '0';
      m_cCnt_Buf[2][8] = '0';

上面的代码似乎没有任何问题。任何想法为什么这些被拾起,以及如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我是Cppcheck开发人员。

有趣。对我来说它看起来像FP。但是我无法用Cppcheck重现这个FP。