added a few testcases for checking memory leaks in classes

This commit is contained in:
Martin Ettl 2010-06-11 13:33:10 +02:00
parent 81828742ac
commit 69ecc24bf5
1 changed files with 44 additions and 0 deletions

View File

@ -3132,6 +3132,28 @@ private:
"void A::init()\n" "void A::init()\n"
"{ p = new int[10]; }\n"); "{ p = new int[10]; }\n");
ASSERT_EQUALS("[test.cpp:3]: (error) Memory leak: A::p\n", errout.str()); ASSERT_EQUALS("[test.cpp:3]: (error) Memory leak: A::p\n", errout.str());
check("class A\n"
"{\n"
" int *p;\n"
"public:\n"
" void init();\n"
"};\n"
"\n"
"void A::init()\n"
"{ p = new int; }\n");
ASSERT_EQUALS("[test.cpp:3]: (error) Memory leak: A::p\n", errout.str());
check("class A\n"
"{\n"
" int *p;\n"
"public:\n"
" void init();\n"
"};\n"
"\n"
"void A::init()\n"
"{ p = malloc(sizeof(int)*10); }\n");
ASSERT_EQUALS("[test.cpp:3]: (error) Memory leak: A::p\n", errout.str());
} }
void class15() void class15()
@ -3146,6 +3168,28 @@ private:
"A::A()\n" "A::A()\n"
"{ p = new int[10]; }"); "{ p = new int[10]; }");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
check("class A\n"
"{\n"
" int *p;\n"
"public:\n"
" A();\n"
" ~A() { delete p; }\n"
"};\n"
"A::A()\n"
"{ p = new int; }");
ASSERT_EQUALS("", errout.str());
check("class A\n"
"{\n"
" int *p;\n"
"public:\n"
" A();\n"
" ~A() { free(p); }\n"
"};\n"
"A::A()\n"
"{ p = malloc(sizeof(int)*10); }");
ASSERT_EQUALS("", errout.str());
} }
void class16() // ticket 1788 void class16() // ticket 1788