【问题标题】:Detection of dynamic allocation with the new operator C++ [closed]使用新运算符 C++ 检测动态分配 [关闭]
【发布时间】:2019-07-28 23:32:34
【问题描述】:

new 是唯一允许我们检测 C++ 中动态内存分配的运算符吗?

我问这个是因为我想为我的类的析构函数释放所有动态内存分配。

【问题讨论】:

  • “检测动态内存分配”是什么意思?如果使用new,则必须与delete 匹配(new[]delete[] 相同)。你真的需要手动和显式的内存处理吗?考虑“动态数组”的the standard smart pointersstd::vector。在某些情况下,可以完全避免使用指针。如果这是我们不知道的一种情况,因为您没有向我们提供任何背景或信息。
  • 检测operator new 中的内存分配并在析构函数中释放它们可能是错误的设计,因为您将无法“记住”构造对象的类型。您想如何在析构函数中正确销毁它们?

标签: c++ class memory-management destructor


【解决方案1】:

在现代 C++ 中,您使用 std::shared_ptrstd::unique_ptr 保留堆引用。当它们被销毁或您手动reset()它们时,它们将自动释放内存。

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2022-01-17
    • 2015-04-11
    • 2016-10-04
    • 1970-01-01
    • 2013-09-18
    • 2013-03-02
    • 2021-07-17
    相关资源
    最近更新 更多