2010-10-13 199 views
1

其中一个cpp文件具有用“new”运算符创建的结构指针。该指针是否应该被明确删除?或者指针是否自动删除?删除指向结构的指针

+0

新的使用是创建一个动态的对象。你应该自己删除它。你所说的关于自动对象是真实的。 – 2010-10-13 19:51:31

回答

7

C++不(通常)具有自动内存管理。要释放该对象的内存,您可以使用删除当使用是一个不同的问题。

编辑:此外,指针将被删除(或将在堆栈上覆盖)当函数返回时,但对象指着会留在堆中,直到你删除它。

+0

+1“*当*使用它是一个不同的问题。” – 2010-10-13 19:34:19

1

使用'new'关键字将在堆上分配内存,就像'malloc'在C中一样。要在使用完内存后恢复内存,必须执行'delete'从'新'返回的指针。

这是很容易当某些对象的生活不它被实例化的功能外延伸,但是当这些物品被退回或添加到收藏变得更加复杂......

1

由于@Jared厄普代克的注意事项,你必须自己做。这就是为什么诸如Boost和C++ 0x这样的智能指针被广泛使用的原因之一 - 它们是轻量级类,它们管理底层原始内存指针,以避免在忘记deletedelete[]原始指针时(而不是)忘记内存泄漏。

如果您是C++新手,请自己帮忙,take a look at thosescoped_ptr,shared_ptr等)。

1

如果您正在寻找更轻松的内存管理,您可能需要查看Shared Pointers。它们是一种方便的方式,可以确保在使用相同的情况下内存将被释放。