析构函数删除在 main 中声明的动态数组
Destructor delete dynamic array declared in main
我已经在 int main 中声明了动态数组,所以我的问题是如何在析构函数中删除和释放该数组?? 否则我应该在 main 中释放它。
德尔特[] PTR ---
请向我回答这个简单的问题。提前致谢
我也实现了类,但在 main 中声明了动态数组,那么析构函数有什么用? 我应该在析构函数中删除吗?
程序本身没有析构函数。它从main
年初开始,到main
年底结束。如果您需要释放一些在 main
开头分配的内存,您应该在main
结束之前执行此操作:
int main() {
int* arr = new int[10];
// Do lots of work
delete[] arr;
}
当然,如果使用 RAII 将此内存分配封装在类中会好得多,这样您就不必手动处理它。事实上,已经存在这方面的类型 - 标准库容器(例如 std::vector
或 std::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
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错