私はこのサイトの初心者なので、ここで質問のエチケットを台無しにしてしまった場合は、事前にお詫び申し上げます... ありがとうございます!
これは非常に単純化されたサンプル コードですが、私が話していることを示していると思います。別のメソッドを呼び出して値をテストする 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 の Value Tracking がvalidNumber()
呼び出しを無視しているように見え、演算子 '[' による境界外ポインター (データの終わりを超えた 1) への 661 アクセスの可能性があるという警告を出すことです。
ただし、次のようにすると、Lint は満足します。
if ((n > 0) && (n <= MAX)) //test n
...
では、テストがメソッド呼び出しの場合、Lint の Value Tracking は機能しないのでしょうか?
再度、感謝します、
HF