Valgrind reported a memory leak.
user@ubuntu:~/devel/effective_cpp$ g++ virt_dtor.cpp -ggdb user@ubuntu:~/devel/effective_cpp$ cat virt_dtor.cpp #includeusing namespace std; class Base{ public: ~Base() { cout << "~Base()" << endl; } }; class Der: public Base{ public: int* array; Der(){ array = new int[10]; } ~Der() { cout << "~Der()" << endl; delete[] array; } }; int main() { Base* b = new Der; delete b; } user@ubuntu:~/devel/effective_cpp$ valgrind --leak-check=full ./a.out ==2791== Memcheck, a memory error detector ==2791== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==2791== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==2791== Command: ./a.out ==2791== ~Base() ==2791== ==2791== HEAP SUMMARY: ==2791== in use at exit: 40 bytes in 1 blocks ==2791== total heap usage: 2 allocs, 1 frees, 44 bytes allocated ==2791== ==2791== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==2791== at 0x4025FE5: operator new[](unsigned int) (vg_replace_malloc.c:299) ==2791== by 0x80488C8: Der::Der() (virt_dtor.cpp:12) ==2791== by 0x80487A7: main (virt_dtor.cpp:18) ==2791== ==2791== LEAK SUMMARY: ==2791== definitely lost: 40 bytes in 1 blocks ==2791== indirectly lost: 0 bytes in 0 blocks ==2791== possibly lost: 0 bytes in 0 blocks ==2791== still reachable: 0 bytes in 0 blocks ==2791== suppressed: 0 bytes in 0 blocks ==2791== ==2791== For counts of detected and suppressed errors, rerun with: -v ==2791== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 19 from 8)
No comments:
Post a Comment