指针是否需要释放的问题

宇宙漫步者 2013-11-18 07:09:43
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吗???

}
...全文
543 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
追_逐 2013-11-19
  • 打赏
  • 举报
回复
从代码的逻辑上来讲不应该在此处进行释放,而应遵循一个规则就是谁申请谁释放,你在A类中提供一个Get 函数且申请了一片内存,那么你应该提供一个Release 之类的函数来对应Get 函数进行相对应的清理工作。这样子代码的逻辑才更清晰。
starytx 2013-11-19
  • 打赏
  • 举报
回复
从设计层面说,有new的成员函数,就来个与之对应的delete的成员函数,使用的时候成对使用,比如可起名为releasePAObject
Adol1111 2013-11-18
  • 打赏
  • 举报
回复
如果就你的程序来说是没必要的,因为程序已经结束了。但在真正的项目里,只要new出来的,都需要手动释放。当然一般实际应用的时候更喜欢用智能指针管理new出来的对象,RAII是C++内存管理的精髓,最好去好好体会下。
max_min_ 2013-11-18
  • 打赏
  • 举报
回复
需要的啊!只要是new出来的最好都自己手动释放下!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧