例如,在我的 C++main
函数中,如果我有一个指向使用堆内存(而不是堆栈内存)的变量的指针 - 这会在我的应用程序退出后自动释放吗?我会这样认为。
即便如此,即使您认为在退出时自动释放内存的情况下永远不会使用它们,也总是删除堆分配是一种好习惯吗?
例如,这样做有什么意义吗?
int main(...)
{
A* a = new A();
a->DoSomething();
delete a;
return 0;
}
我在想,如果我重构(或其他人重构)该代码并将其放在应用程序中的其他位置,delete
那么真的有必要。
除了 Brian R. Bondy 的回答(专门讨论了 C++ 中的含义)之外,Paul Tomblin对一个 C 特定问题也有很好的回答,该问题也谈到了 C++ 析构函数。