c++手动释放自己new出来的成员变量

#include <iostream> class Demo { public: int* a; }; /** int * f() { Demo d; d.a = new int(1); std::cout << "addr: "<< d.a<<" "<< *d.a << std::endl; //delete d.a; return d.a; } int main() { int * ret = f(); std::cout << "addr: " << ret << " " << *ret << std::endl; int * a = new int(2); std::cout << "next addr: " << a << " " << *a << std::endl; getchar(); } */ /** void f(Demo* &dAddr, int* &aAddr) { Demo* d = new Demo; d->a = new int(1); std::cout << "dAddr: " << d << std::endl; std::cout << "aAddr: " << d->a << " " << *d->a << std::endl; dAddr = d; aAddr = d->a; } int main() { Demo *d; int *a; f(d, a); delete a; delete d; std::cout << "dAddr: " << d << std::endl; std::cout << "aAddr: " << a << std::endl; Demo *d2 =new Demo; d2->a = new int(2); std::cout << "d2Addr: " << d2 << std::endl; std::cout << "a2Addr: " << d2->a << " " << *d2->a << std::endl; getchar(); } */ // 综上,delete obj 不会释放obj.mem的内存,所以需要手动释放所有new处理的成员变量