指针内存释放的问题
问题时这样的,有A B两个类
在A类中通过指针申请了内存,指针为a1,由于B类中也要使用,于是把a1指针传给B类,
B类中用b1接收,B类比A类要早销毁,我想问一下b1这个指针怎么处理?
由于a1 b1指向同一块内存,B类销毁后A类还在,所以b1指向的内存不能释放,
本来想让b1 == NULL,但是时MFC的消息响应函数,所以找不到好的时机让b1==NULL(在B的析构函数中让b1==NULL吗?)
有咩有别的处理方法?
菜鸟问题 求大神指教
[解决办法]
使用引用计数,减到0才delete
[解决办法]
智能指针。或者如果你想让那个b1==NULL其实也是有方法的,MFC里面一般都有个Destroy函数的呢。你可以这里面设置。
[解决办法]
在B的析构中将b1=NULL,在A的析构中销毁a1,但是在B的构造中要进行判断,如果a1 == NULL则不赋值,你懂的...
[解决办法]
计数器或者智能指针都可以解决这个问题。不过面向对象的封装特性,就是牺牲点点性能和空间,带来健壮性的提升,我觉得既然选择了c++,就不要两个类对象公用指针了。
[解决办法]
计数器或者智能指针都可以解决这个问题。不过面向对象的封装特性,就是牺牲点点性能和空间,带来健壮性的提升,我觉得既然选择了c++,就不要两个类对象公用指针了。
[解决办法]
使用智能指针。SmartPointer