#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处理的成员变量