指针是否需要释放的问题
class A{};
class B{
private:
A *pa;
public:
A* getPAObject(){
return new A();
}
};
int main(){
A *pa=new A();
B *pb=pa->getPAObject();
delete pa;
delete pb;//此处需要释放pb吗???
}
内存释放
[解决办法]
需要的啊!只要是new出来的最好都自己手动释放下!
[解决办法]
如果就你的程序来说是没必要的,因为程序已经结束了。但在真正的项目里,只要new出来的,都需要手动释放。当然一般实际应用的时候更喜欢用智能指针管理new出来的对象,RAII是C++内存管理的精髓,最好去好好体会下。
[解决办法]
从设计层面说,有new的成员函数,就来个与之对应的delete的成员函数,使用的时候成对使用,比如可起名为releasePAObject
[解决办法]
从代码的逻辑上来讲不应该在此处进行释放,而应遵循一个规则就是谁申请谁释放,你在A类中提供一个Get 函数且申请了一片内存,那么你应该提供一个Release 之类的函数来对应Get 函数进行相对应的清理工作。这样子代码的逻辑才更清晰。