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

Destructor delete dynamic array declared in main

本文关键字:动态 数组 声明 删除 main 析构函数      更新时间:2023-10-16

我已经在 int main 中声明了动态数组,所以我的问题是如何在析构函数中删除和释放该数组?? 否则我应该在 main 中释放它。
德尔特[] PTR ---
请向我回答这个简单的问题。提前致谢

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

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

int main() {
  int* arr = new int[10];
  // Do lots of work
  delete[] arr;
}

当然,如果使用 RAII 将此内存分配封装在类中会好得多,这样您就不必手动处理它。事实上,已经存在这方面的类型 - 标准库容器(例如 std::vectorstd::array )。

每个作用域都有退出点。您可以利用此和析构函数来实现 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