返回顶部

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

 

posted @ 2022-05-28 16:57  Zcb0812  阅读(106)  评论(0)    收藏  举报