【问题标题】:(c++) what happens to objects on the heap that don't have any pointers to them?(c++) 堆上没有任何指针的对象会发生什么?
【发布时间】:2013-04-04 03:02:44
【问题描述】:

它们会成为内存泄漏还是 c++ 意识到它们没有指向它们的指针并释放内存?如果必须删除它们,我只需使用删除命令对吗?

【问题讨论】:

  • 什么都没有;他们坐在那里,占据空间,永远不会被重复使用。这称为内存泄漏,是个坏消息。
  • 根据定义这是内存泄漏。
  • 在你错误地认为 C++ 是一门很难的语言之前,你需要不断地注意释放你的记忆,你没有。这就是我们有container classessmart pointers 的原因,它们允许在大多数用户代码中完全避免deletenew 也几乎可以完全避免,除了创建一个 unique_ptr(对此的补救措施正在进行中)

标签: c++ object pointers heap-memory


【解决方案1】:

c++ 是否意识到它们没有指向它们的指针并释放内存?

C++ 没有“实现”任何这样的事情。没有内置的垃圾收集器。

如果您使用new 分配内存并且没有通过相应的delete 调用来释放它,那么您就有内存泄漏。

【讨论】:

    【解决方案2】:

    Cody 是正确的,C++ 没有垃圾收集器,所以当指向对象的指针丢失时,你会发生内存泄漏。

    C++ 在标准库中确实有一些东西可以解决这个问题。如果对象不再有任何std::shared_ptr 指向它,std::shared_ptr 将自动删除该对象。

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多