不同模块间对象的传递和释放

今天下午我在释放一个dll中动态分配的内存的时候,居然发生错误,释放失败,回想一下以前似乎也遇到过,解决方法就是哪儿创建的在哪儿释放。VTK中的做法是使用静态的New()方法构造,Release()方法释放。如:
class  Obj
{
public:
    static Obj* New()
    {
       return new Obj();
    }
    void Release()
    {
       delete this;
    }
private:
    Obj(){}
    ~Obj(){}
    ......
};

采用如上方法保证了一个对象只在他自己的模块中被创建和释放,声明构造函数和析构函数为私有。可以限制对象的创建和释放方法,不符合要求的会在编译时就报错了。

这在linux下是不会有这个问题的,有关为何windows下不能在一个模块中释放另一个模块的内存,请参阅:

在一个模块中分配的内存在另外一个模块释放?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值