删除自动int变量

时间:2012-12-07 02:13:38

标签: c++ memory-management

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

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

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

int intToDelete = 6;
delete &intToDelete;

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

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:1)

delete用于释放由new运算符分配的堆中的内存,delete[]new[]的对应内容。 您无法使用delete释放未由new分配的指针,即使是来自malloc的指针。

答案 2 :(得分:0)

本地对象自动清理自己。这是该语言最有用的功能之一,因为它也可以通过RAII扩展到非本地对象。具体来说,使用delete是一个大量红旗,你没有使用正确的自动清理工具,delete[]甚至更糟。

正确使用构造和销毁语义对于编写良好的C ++代码至关重要。如果你是手动管理内存,你做错了,除非你有一个狡猾的旧编译器一些非常独特的情况(我从来没有见过任何实际证明这一点的例子) 。