// library typedef unsigned int size_t; void *malloc(size_t size); void *calloc(size_t nmemb, size_t size); void *realloc(void *ptr, size_t size); void free(void* ptr); char *strdup(const char *s1); int *ID(int *x) { return x; } class MyClass4 { public: MyClass4() { int *local; a = b = new int; // GOOD (a is deleted) c = d = new int; // GOOD (d is deleted) e = local = new int; // BAD (e is not deleted) [NOT REPORTED] f = new int; // GOOD (ID(f) is deleted) [FALSE POSITIVE] g = ID(new int); // GOOD (g is deleted) } ~MyClass4() { delete a; delete d; delete ID(f); delete g; } int *a, *b, *c, *d, *e, *f, *g; }; class MyClass5 { public: MyClass5() { a = new int[10]; // GOOD b = (int *)calloc(10, sizeof(int)); // GOOD c = (int *)realloc(0, 10 * sizeof(int)); // GOOD d = strdup("string"); } ~MyClass5() { delete [] a; free(b); free(c); free(d); } int *a, *b, *c; char *d; }; class MyClass6 { public: MyClass6() { a = new int[10]; // BAD b = (int *)calloc(10, sizeof(int)); // BAD c = (int *)realloc(0, 10 * sizeof(int)); // BAD d = strdup("string"); // BAD } ~MyClass6() { } int *a, *b, *c; char *d; }; class MyClass7 { public: MyClass7() { } bool open() { // ... } void close() { // ... } }; class myClass7Test { public: myClass7Test() { success = mc7.open(); // GOOD } ~myClass7Test() { mc7.close(); } private: MyClass7 mc7; bool success; };