其中一个cpp文件具有用“new”运算符创建的结构指针。该指针是否应该被明确删除?或者指针是否自动删除?删除指向结构的指针
1
A
回答
7
C++不(通常)具有自动内存管理。要释放该对象的内存,您可以使用删除。 当使用是一个不同的问题。
编辑:此外,指针将被删除(或将在堆栈上覆盖)当函数返回时,但对象指着会留在堆中,直到你删除它。
+0
+1“*当*使用它是一个不同的问题。” – 2010-10-13 19:34:19
1
使用'new'关键字将在堆上分配内存,就像'malloc'在C中一样。要在使用完内存后恢复内存,必须执行'delete'从'新'返回的指针。
这是很容易当某些对象的生活不它被实例化的功能外延伸,但是当这些物品被退回或添加到收藏变得更加复杂......
1
由于@Jared厄普代克的注意事项,你必须自己做。这就是为什么诸如Boost和C++ 0x这样的智能指针被广泛使用的原因之一 - 它们是轻量级类,它们管理底层原始内存指针,以避免在忘记delete
或delete[]
原始指针时(而不是)忘记内存泄漏。
如果您是C++新手,请自己帮忙,take a look at those(scoped_ptr
,shared_ptr
等)。
1
如果您正在寻找更轻松的内存管理,您可能需要查看Shared Pointers。它们是一种方便的方式,可以确保在使用相同的情况下内存将被释放。
相关问题
- 1. C++:删除指针结构
- 2. 指向结构指针的指针
- 3. 指向结构指针的指针
- 4. 不同结构类型指针指向指针结构指针
- 5. 指向结构的指针
- 6. 指向结构的指针
- 7. 删除结构的指针是否也会删除结构中的指针?
- 8. 指针指向结构指针错误
- 9. 指向结构指针
- 10. 引用指向结构的指针,该结构包含指向结构的指针的指针
- 11. 设置结构的指针成员,从指针指向结构的指针
- 12. 指向结构的指针指向结构
- 13. 删除指针向量中的指针指向的对象
- 14. 指向c中的结构的指针
- 15. 指向结构数组的指针
- 16. 指向结构成员的指针
- 17. 指向结构数组的指针
- 18. 指向结构中的指针
- 19. 指向结构体的指针阵列
- 20. 指向结构argv赋值的指针
- 21. 返回指向结构体的指针
- 22. C++指向结构的指针阵列
- 23. 指向结构的免费3D指针
- 24. 指向结构的指针成员
- 25. JNA指向结构的指针
- 26. C++指针结构不会被删除
- 27. 删除指针的指针
- 28. 删除指向矢量的指针
- 29. 删除指针向量
- 30. 指针和结构指针
新的使用是创建一个动态的对象。你应该自己删除它。你所说的关于自动对象是真实的。 – 2010-10-13 19:51:31