首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针是否需要释放的有关问题

2013-12-20 
指针是否需要释放的问题class A{};class B{private:A *papublic:A* getPAObject(){return new A()}}int

指针是否需要释放的问题
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 函数进行相对应的清理工作。这样子代码的逻辑才更清晰。

热点排行