2010-09-09 2 views
1

Я использую PC-lint9, чтобы узнать об ошибках в последнее время, и это действительно взорвало мой разум, но, похоже, PC-lint9 не может проследить висящий указатель, вот снимок кода, с которым я сдавал экзамен.ПК-линт Gimpel не может проследить висящий указатель?

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

Обнаружена ошибка ПК-Lint. Я думаю, что может быть что-то не так с конфигурацией (я не подавлял никаких ошибок и устанавливал уровень предупреждения на 3), так как в рекламе говорится: «Обнаружение болтающихся и неинициализированных указателей». Кто-нибудь знает, как это решить?

ответ

0

Возможно, рекламу следует читать как «Обнаружение болтается ...». Старая дилемма между ложными срабатываниями и ложными негативами ...

Теперь я ожидаю, что вы думаете, что PC-lint будет обнаруживать какой-либо обвисший указатель, он должен обнаружить один ваш пример, который действительно довольно прост. Но, возможно, более структурный один ниже проще и действительно единственным обнаруженным видом. Не могли бы вы попробовать?

int* pkDangInt; 
{ 
    int x; 
    pkDangInt = &x; 
} 
(*pkDangInt) = 1; 
+0

thanks Cuoq. Теперь я могу попробовать другой способ, а не пытаться выяснить, как заставить его работать. – eddielu

+0

@Ira Упс, мой пример был неправильным. Спасибо, что указали это. –

Смежные вопросы