Cppcheck
Public Member Functions | Private Member Functions | Static Private Member Functions | Friends | List of all members
CheckMemoryLeakInClass Class Reference

Check class variables, variables that are allocated in the constructor should be deallocated in the destructor More...

#include <checkmemoryleak.h>

Inheritance diagram for CheckMemoryLeakInClass:
Check CheckMemoryLeak

Public Member Functions

 CheckMemoryLeakInClass ()
 
- Public Member Functions inherited from Check
 Check (const std::string &aname)
 This constructor is used when registering the CheckClass. More...
 
virtual ~Check ()
 
 Check (const Check &)=delete
 
Checkoperator= (const Check &)=delete
 
const std::string & name () const
 class name, used to generate documentation More...
 
virtual FileInfogetFileInfo (const Tokenizer &, const Settings &) const
 
virtual FileInfoloadFileInfoFromXml (const tinyxml2::XMLElement *xmlElement) const
 
virtual bool analyseWholeProgram (const CTU::FileInfo *ctu, const std::list< FileInfo * > &fileInfo, const Settings &, ErrorLogger &)
 

Private Member Functions

 CheckMemoryLeakInClass (const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger)
 
void runChecks (const Tokenizer &tokenizer, ErrorLogger *errorLogger) override
 run checks, the token list is not simplified More...
 
void check ()
 
void variable (const Scope *scope, const Token *tokVarname)
 
void checkPublicFunctions (const Scope *scope, const Token *classtok)
 Public functions: possible double-allocation. More...
 
void publicAllocationError (const Token *tok, const std::string &varname)
 
void unsafeClassError (const Token *tok, const std::string &classname, const std::string &varname)
 
void getErrorMessages (ErrorLogger *e, const Settings *settings) const override
 get error messages More...
 
std::string classInfo () const override
 get information about this class, used to generate documentation More...
 
- Private Member Functions inherited from CheckMemoryLeak
 CheckMemoryLeak ()=delete
 
 CheckMemoryLeak (const CheckMemoryLeak &)=delete
 
CheckMemoryLeakoperator= (const CheckMemoryLeak &)=delete
 
 CheckMemoryLeak (const Tokenizer *t, ErrorLogger *e, const Settings *s)
 
void memoryLeak (const Token *tok, const std::string &varname, AllocType alloctype) const
 
AllocType getDeallocationType (const Token *tok, nonneg int varid) const
 Get type of deallocation at given position. More...
 
AllocType getAllocationType (const Token *tok2, nonneg int varid, std::list< const Function * > *callstack=nullptr) const
 Get type of allocation at given position. More...
 
AllocType getReallocationType (const Token *tok2, nonneg int varid) const
 Get type of reallocation at given position. More...
 
bool isReopenStandardStream (const Token *tok) const
 Check if token reopens a standard stream. More...
 
bool isOpenDevNull (const Token *tok) const
 Check if token opens /dev/null. More...
 
void memleakError (const Token *tok, const std::string &varname) const
 Report that there is a memory leak (new/malloc/etc) More...
 
void resourceLeakError (const Token *tok, const std::string &varname) const
 Report that there is a resource leak (fopen/popen/etc) More...
 
void deallocuseError (const Token *tok, const std::string &varname) const
 
void mismatchAllocDealloc (const std::list< const Token * > &callstack, const std::string &varname) const
 
void memleakUponReallocFailureError (const Token *tok, const std::string &reallocfunction, const std::string &varname) const
 
AllocType functionReturnType (const Function *func, std::list< const Function * > *callstack=nullptr) const
 What type of allocated memory does the given function return? More...
 

Static Private Member Functions

static std::string myName ()
 

Friends

class TestMemleakInClass
 

Additional Inherited Members

- Static Public Member Functions inherited from Check
static std::list< Check * > & instances ()
 List of registered check classes. More...
 
static void writeToErrorList (const ErrorMessage &errmsg)
 Write given error to stdout in xml format. More...
 
- Protected Member Functions inherited from Check
 Check (std::string aname, const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger)
 This constructor is used when running checks. More...
 
void reportError (const Token *tok, const Severity severity, const std::string &id, const std::string &msg)
 report an error More...
 
void reportError (const Token *tok, const Severity severity, const std::string &id, const std::string &msg, const CWE &cwe, Certainty certainty)
 report an error More...
 
void reportError (const std::list< const Token * > &callstack, Severity severity, const std::string &id, const std::string &msg)
 report an error More...
 
void reportError (const std::list< const Token * > &callstack, Severity severity, const std::string &id, const std::string &msg, const CWE &cwe, Certainty certainty)
 report an error More...
 
void reportError (const ErrorPath &errorPath, Severity severity, const char id[], const std::string &msg, const CWE &cwe, Certainty certainty)
 
void logChecker (const char id[])
 log checker More...
 
ErrorPath getErrorPath (const Token *errtok, const ValueFlow::Value *value, std::string bug) const
 
bool wrongData (const Token *tok, const char *str)
 Use WRONG_DATA in checkers when you check for wrong data. More...
 
- Static Protected Member Functions inherited from Check
static std::string getMessageId (const ValueFlow::Value &value, const char id[])
 
- Protected Attributes inherited from Check
const Tokenizer *const mTokenizer {}
 
const Settings *const mSettings {}
 
ErrorLogger *const mErrorLogger {}
 
- Private Types inherited from CheckMemoryLeak
enum  AllocType {
  No , Malloc , New , NewArray ,
  File , Fd , Pipe , OtherMem ,
  OtherRes , Many
}
 What type of allocation are used. More...
 

Detailed Description

Check class variables, variables that are allocated in the constructor should be deallocated in the destructor

Definition at line 223 of file checkmemoryleak.h.

Constructor & Destructor Documentation

◆ CheckMemoryLeakInClass() [1/2]

CheckMemoryLeakInClass::CheckMemoryLeakInClass ( )
inline

Definition at line 227 of file checkmemoryleak.h.

◆ CheckMemoryLeakInClass() [2/2]

CheckMemoryLeakInClass::CheckMemoryLeakInClass ( const Tokenizer tokenizer,
const Settings settings,
ErrorLogger errorLogger 
)
inlineprivate

Definition at line 230 of file checkmemoryleak.h.

Member Function Documentation

◆ check()

void CheckMemoryLeakInClass::check ( )
private

◆ checkPublicFunctions()

void CheckMemoryLeakInClass::checkPublicFunctions ( const Scope scope,
const Token classtok 
)
private

◆ classInfo()

std::string CheckMemoryLeakInClass::classInfo ( ) const
inlineoverrideprivatevirtual

get information about this class, used to generate documentation

Implements Check.

Definition at line 261 of file checkmemoryleak.h.

◆ getErrorMessages()

void CheckMemoryLeakInClass::getErrorMessages ( ErrorLogger errorLogger,
const Settings settings 
) const
inlineoverrideprivatevirtual

get error messages

Implements Check.

Definition at line 251 of file checkmemoryleak.h.

References publicAllocationError(), and unsafeClassError().

◆ myName()

static std::string CheckMemoryLeakInClass::myName ( )
inlinestaticprivate

Definition at line 257 of file checkmemoryleak.h.

◆ publicAllocationError()

void CheckMemoryLeakInClass::publicAllocationError ( const Token tok,
const std::string &  varname 
)
private

Definition at line 679 of file checkmemoryleak.cpp.

References CWE398, normal, Check::reportError(), and warning.

Referenced by checkPublicFunctions(), and getErrorMessages().

◆ runChecks()

void CheckMemoryLeakInClass::runChecks ( const Tokenizer ,
ErrorLogger  
)
inlineoverrideprivatevirtual

run checks, the token list is not simplified

Implements Check.

Definition at line 233 of file checkmemoryleak.h.

References check(), Tokenizer::getSettings(), and Tokenizer::isCPP().

◆ unsafeClassError()

void CheckMemoryLeakInClass::unsafeClassError ( const Token tok,
const std::string &  classname,
const std::string &  varname 
)
private

◆ variable()

void CheckMemoryLeakInClass::variable ( const Scope scope,
const Token tokVarname 
)
private

Friends And Related Function Documentation

◆ TestMemleakInClass

friend class TestMemleakInClass
friend

Definition at line 224 of file checkmemoryleak.h.


The documentation for this class was generated from the following files: