I couldn't understand this so I'm reporting it. // void *Allocate(void); // void Free(void *p); void f(void) { void *p; p = Allocate(); if(p != NULL) { Free((void *)p); } } cppcheck reports: style: Argument '(void*)p' to function Free is always 1 [constArgument] If the (admittedly unnecessary) void pointer cast is removed from the Free() call, it disappears. Used cppcheck version is 1.89. Older version 1.77 did not report this.