析构函数删除在main中声明的动态数组

时间:2014-03-02 12:59:21

标签: c++

我在int main中声明了动态数组,所以我的问题是如何在析构函数中删除和释放该数组?或者我应该在主内部释放。
delte [] ptr ---
请回答这个简单的问题。提前致谢

我还实现了类,但在main中声明了动态数组,那么使用析构函数是什么?我应该在析构函数中删除吗?

2 个答案:

答案 0 :(得分:1)

程序本身没有析构函数。它从main的开头开始,到main的末尾结束。如果您需要释放在main开头分配的内存,则应在main结束前执行此操作:

int main() {
  int* arr = new int[10];

  // Do lots of work

  delete[] arr;
}

当然,如果使用RAII将这个内存分配封装在一个类中会更好,这样你就不必手动处理它。实际上,已存在类型 - 标准库容器(例如std::vectorstd::array)。

答案 1 :(得分:0)

每个范围都有退出点。您可以使用this和析构函数来实现RAII成语。由于您没有要包装数据的类,因此可以使用boost库来定义要在范围退出时执行的操作。

{ // some scope, maybe that of a main function
    double *new_ar = new double[15];
    BOOST_SCOPE_EXIT(new_ar) {
        delete[] new_ar;
    } BOOST_SCOPE_EXIT_END
} // end of scope