我是否必须在C ++中手动删除结构指针?

时间:2015-01-10 17:34:47

标签: c++ memory struct

有人告诉我,我不一定要手动删除结构指针 根据我的理解,你必须deletenew分配的所有东西,甚至是结构,对吗?

4 个答案:

答案 0 :(得分:2)

对,你必须。 和其他一切一样,如果你为某些东西分配了内存,你就有责任释放它。

答案 1 :(得分:1)

您可以使用智能指针,例如std::unique_ptr。当结构的对象被破坏时,它会调用自己的删除器。

否则你确实必须调用operator delete或delete [],前提是结构是指针的所有者。

答案 2 :(得分:0)

当然,当您new任何类型(intchar,...,MyClassMyStruct)时,您都会保留一些记忆,所以你需要在以后自己解放。

任何delete

new 任何delete[]

new[] ......

答案 3 :(得分:0)

一般情况下,deletenew delete []new []fclose fopenunique_ptr shared_ptr所有{{1}}其他品种。

但是,如果您将其委托给智能指针,例如{{1}}和{{1}},则无需自行编写。 无论如何,你应该按照一般原则做到这一点!

此外,实际上有一些情况下永远不会解除分配是合适的,就像你存储一些数据一样,你必须保留到程序结束,除非析构函数做了重要的事情。

实际上,当房屋被拆除时,没有必要费心去扫地毯,这会对性能造成负面影响,这可能很容易变得不明显。 想一想“来这里(页面),所以我可以解雇你(免费)。”似乎有点无意义甚至是恶意的。