【发布时间】:2012-01-03 16:33:41
【问题描述】:
我是这个网站的新手,所以如果我在这里搞砸了任何提问的礼仪,我提前道歉......谢谢!
这是非常简化的示例代码,但我认为它说明了我在说什么:我有一个 C++ 方法,它调用另一个方法来测试一个值...
char m_array[MAX]; // class member, MAX is a #define
foo(unsigned int n)
{
if (validNumber(n)) //test n
{
// do stuff
m_array[n-1] = 0;
}
}
在哪里:validNumber(unsigned int val) { return ((val > 0) && (val <= MAX)); }
令我恼火的是,PC Lint 的值跟踪似乎忽略了 validNumber() 调用,并给出了一个 警告 661 操作员可能访问越界指针(1 超出数据末尾)' ['
但是,如果我这样做,Lint 很高兴:
if ((n > 0) && (n <= MAX)) //test n
...
那么,如果测试是方法调用,Lint 的值跟踪是否不起作用?
再次感谢,
高频
【问题讨论】: