2013-04-04 75 views
0

它们是否成为内存泄漏,或者C++是否意识到它们没有针对它们的指针并释放内存?如果他们必须被删除,我只是使用删除命令吧?(C++)堆上没有指向它们的指针的对象会发生什么?

+1

Nothing;他们坐在那里占据空间,永远不会被重用。这被称为内存泄漏,这是一个坏消息。 – 2013-04-04 03:04:19

+2

按定义,这是内存泄漏。 – Pubby 2013-04-04 03:04:29

+1

而在你意识到C++是这种困难的语言之前,你需要不断地注意释放你的记忆之前,你不会这样做。这就是为什么我们有[容器类](http://en.cppreference.com/w/cpp/container)和[智能指针](http://en.cppreference.com/w/cpp/memory),它允许在大多数用户代码中完全避免使用“delete”。 'new'也可以几乎完全避免,除了创建一个'unique_ptr'(对此正在进行补救) – 2013-04-04 03:17:28

回答

2

C++意识到他们没有针对他们的指针并释放内存?

C++没有“意识到”任何这样的事情。没有内置垃圾回收器。

如果您使用new分配内存并且没有通过相应的delete调用释放内存,则说明存在内存泄漏。

+0

我明白了,谢谢。 – 2013-04-04 03:04:54

0

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

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

相关问题