【发布时间】:2013-03-05 11:11:03
【问题描述】:
只是想知道,因为我正在与一个 C++ 项目的合作伙伴一起工作, 是否可以显式删除已在堆栈上初始化的对象? (所以没有指针)
例如:
MinHeap h(data); // on stack
对比
MinHeap *h = new MinHeap();
这从来没有出现过,因为我总是在堆上为一个大对象分配内存。
【问题讨论】:
-
显而易见的问题是,当堆栈自动为您清理时,为什么要“显式删除”堆栈上的某些内容?
-
好吧,我实际上不会,但我更精通 Java 的伙伴想要避免指针并初始化堆栈上的对象。然后当我们需要明确删除它时出现了这个问题,所以我只是想知道答案,因为我从未想过这个问题
-
好吧,告诉他这是一件好事,不会造成任何问题。您无需删除任何内容。实际上,如果您不需要显式控制对象的生命周期,则在堆栈上是首选的执行方式。