• 5252阅读
  • 1回复

关于内存分配new和delete函数的异常问题 [复制链接]

上一主题 下一主题
离线ldqiang
 
只看楼主 正序阅读 楼主  发表于: 2008-04-30
— 本帖被 XChinux 执行加亮操作(2008-04-30) —
我有这样的一个类,重载了new []和delete[]函数,如下:
class  Cpeople
{
public:
        Cpeople();
      ~Cpeople();
      //对成员变量的操作函数

    //以下对全局的new和delete函数进行重载
    void* operator new(size_t);
      void  operator  delete(void*, size_t);
      void* operator new[](size_t);
      void  operator  delete[](void*, size_t);
private:
    //成员变量
}
下面我对这个类进行调用,
Cpeople  *ManyPeople = new CPeople[2000];
if(conditon)
{
///////
}
idelete []ManyPeople;
问题:如果中间的条件语句出现异常,用return 返回了一个值出去,后面的delete就不能调用,
会不会出现内存泄漏? 
我在类中重新实现了delete会不会自动调用呢?谢谢
离线shoreway
只看该作者 1楼 发表于: 2008-04-30
应该是会的,你在return之前delete不就行了么
快速回复
限100 字节
 
上一个 下一个