从堆栈中删除对象?

Fox*_*Fox 2 c++ stack object

只是想知道,因为我正在与C++项目的合作伙伴合作,是否有可能显式删除已在堆栈上初始化的对象?(所以没有指针)

例如:

MinHeap h(data); // on stack
Run Code Online (Sandbox Code Playgroud)

VS

MinHeap *h = new MinHeap();
Run Code Online (Sandbox Code Playgroud)

从来没有出现过,因为我总是在堆上为大对象分配内存.

Kar*_*nek 10

堆栈变量在其当前范围内始终有效.您可以通过在要使实例有效的块周围使用大括号来强制执行范围(从而释放已分配的内存):

{
  MinHeap h(data);
  // Do stuff here

} // h gets freed here
Run Code Online (Sandbox Code Playgroud)