Hello everyone,
In GotW #66, one of the moral is the exception handler of constructor should not do any like resource free task. I do not agree. Here is the quoated moral and my code to prove this moral will have memory leak.
Anything wrong with my analysis?
http://www.gotw.ca/gotw/066.htm
Moral #1: Constructor function-try-block handlers have only one purpose -- to translate an exception. (And maybe to do logging or some other side effects.) They are not useful for any other purpose.
thanks in advance,
George
In GotW #66, one of the moral is the exception handler of constructor should not do any like resource free task. I do not agree. Here is the quoated moral and my code to prove this moral will have memory leak.
Anything wrong with my analysis?
http://www.gotw.ca/gotw/066.htm
Moral #1: Constructor function-try-block handlers have only one purpose -- to translate an exception. (And maybe to do logging or some other side effects.) They are not useful for any other purpose.
Code:
class A { private: int* p; public: A() try { p = new int[10]; // there are some other exceptions here } catch (bad_alloc) { // do not delete since bad_alloc means memory pointed by p is not allocated } catch (...) { // if we do not delete p, there will be memory leak // at this point, we are conflicting with Gotw 66's moral 1 if (p) delete[] p; } }
thanks in advance,
George
Comment