只是想知道,因为我正在与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)