有人告诉我,我不一定要手动删除结构指针
根据我的理解,你必须delete
用new
分配的所有东西,甚至是结构,对吗?
答案 0 :(得分:2)
对,你必须。 和其他一切一样,如果你为某些东西分配了内存,你就有责任释放它。
答案 1 :(得分:1)
您可以使用智能指针,例如std::unique_ptr
。当结构的对象被破坏时,它会调用自己的删除器。
否则你确实必须调用operator delete或delete [],前提是结构是指针的所有者。
答案 2 :(得分:0)
当然,当您new
任何类型(int
,char
,...,MyClass
,MyStruct
)时,您都会保留一些记忆,所以你需要在以后自己解放。
delete
的 new
任何delete[]
的
new[]
......
答案 3 :(得分:0)
一般情况下,delete
每new
delete []
,new []
每fclose
fopen
,unique_ptr
shared_ptr
所有{{1}}其他品种。
但是,如果您将其委托给智能指针,例如{{1}}和{{1}},则无需自行编写。 无论如何,你应该按照一般原则做到这一点!
此外,实际上有一些情况下永远不会解除分配是合适的,就像你存储一些数据一样,你必须保留到程序结束,除非析构函数做了重要的事情。
实际上,当房屋被拆除时,没有必要费心去扫地毯,这会对性能造成负面影响,这可能很容易变得不明显。 想一想“来这里(页面),所以我可以解雇你(免费)。”似乎有点无意义甚至是恶意的。