2016-06-14 39 views
9

Kodumu yönetmek için Cppcheck kullanıyorum. Ben aşağıdaki işlevi vardır: Benim için sürprizCppCheck'te bir hata buldunuz mu? Neden "Boş işaretçi dereference" hatası alıyorum?

bool my_function(std::string my_string) const 
{ 
return 0 == my_string.compare("Some text"); // line 3 
} 

, ben çizgi 3.

yılında KQUEUE Boş işaretçi olsun tamamen karıştı: my işlevinde hiçbir işaretçiler vardır. Neden bu hatayı alıyorum?

Bunu araştırmak için denedim: string boş my_string eğer

  1. kontrol ettim.

    bool my_function(std::string my_string) const 
    { 
    std::string str("Some text"); 
    return 0 == my_string.compare(str); // line 3 
    } 
    

Başka ne yapabilirim:

  • Ben Cppcheck geçici nesnesi kullanılarak şikayetçi olmadığını "Benim metin"
    emin olmak için kullanarak nesneyi yarattı? Cppcheck'te bir böcek mi? işlevinin kendisi ile ilgili bir sorun mu var? Cppcheck, projemde kullanılan diğer std işlevlerinden şikayet etmediğinden bu durumla şaşırırdım.

    Not: Ben hata KQUEUE olası Boş pointer hakkında sormuyorum, bu nedenle bu aşağıdaki sorulardan herhangi birinin kopyası değildir: 1, 2 veya 3.

  • +6

    Bana bir hata gibi görünüyor. Kodda yanlış bir şey göremiyorum. –

    +1

    'i döndürmeyi denediniz mi (0 == my_string.compare ("Bazı metinler")); '? Sadece belki –

    +2

    Sadece açık olmak gerekirse, kod çökmeden çalışır ancak sadece bu cppecker hata bildiriyor, değil mi? – Arunmu

    cevap

    4

    Ben bir Cppcheck geliştiricisiyim.

    Cppcheck'te bir hataya benziyor. Ancak bu yanlış pozitifliği yeniden üretemiyorum. En son Cppeck'leri kullanmıyorsanız lütfen güncelleyin. Aksi taktirde lütfen bu raporu cppcheck hata izleyicisinde rapor edin: http://trac.cppcheck.net