删除自动int变量

2 c++ memory-management

我正在努力学习C++中的最佳习惯和实践,特别是围绕内存管理.通过在我的iOS应用程序中使用ARC,以及使用Java中的内置GC以及其他一些启用了GC的语言,我已经被宠坏了.

我知道你使用deletedelete[]解构指针.我的问题是,你如何delete整数或基本数据类型的其他变量?

我的第一个想法是,因为delete似乎只能使用指针,我可以这样做:

int intToDelete = 6;
delete &intToDelete;
Run Code Online (Sandbox Code Playgroud)

所以基本上,你可以在内存中创建一个指向整数的指针,并使用该指针删除整数吗?

Cod*_*ice 11

delete并且delete[]应该只与你明确分配new或者new[]分别使用的指针一起使用.特别是,每次使用时new,都应该有相应的delete.同样,每个人都new[]需要相应的delete[].您永远不应该使用其中任何一个未明确分配内存的变量.编译器负责所有非指针变量的内存分配(和释放).

  • @DeadMG当然,智能指针是使用指针的首选方式.但是,这个问题更多的是关于原始类型而不是指针.IMO,进入关于手动内存分配和使用智能指针或类似内容的争论超出了这个问题的范围. (3认同)
  • 错了 - 每个`new`需要一个智能指针,每个`delete []`都要求你让三个同事检查你的代码,以确保你不会因为不使用`std :: vector`而突然变得无能为力. (2认同)
  • @Conner一个upvote将不胜感激;-) (2认同)
  • @ Code-Guru感谢您的回答!我现在完全明白了.向上投票! (2认同)