1

我最近一直在使用 PC-lint9 来找出不同的错误,这真的让我大吃一惊,但似乎 PC-lint9 无法跟踪悬空指针,这是我检查的代码的快照。

int* pkInt = new int;
int* pkDangInt = pkInt;
delete pkInt;
( *pkDangInt ) = 1;

PC-Lint 没有检测到错误。我认为配置可能有问题(我没有抑制任何错误并将警告级别设置为 3 ),因为广告说:“检测悬空和未初始化的指针”。有谁知道如何解决这个问题?

4

1 回答 1

0

广告可能应该读作“检测到一些悬空……”。假阳性和假阴性之间的旧困境......

现在,我希望您认为 PC-lint 会检测到任何悬空指针,它应该检测到您的示例,这确实相当简单。但也许下面更结构化的更容易,并且确实是唯一检测到的类型。你能试试吗?

int* pkDangInt;
{
  int x;
  pkDangInt = &x;
}
( *pkDangInt ) = 1;
于 2010-09-09T20:04:01.903 回答