比如说,在我的C++ main
函数中,如果我有一个指向使用堆内存(而不是栈内存)的变量的指针——那么这个变量在我的应用程序结束后会自动释放吗?我认为应该是这样。
即使如此,在情况下内存在退出时会自动释放,是否总是删除堆分配是一个好的实践呢?
例如,这样做有没有意义呢?
int main(...)
{
A* a = new A();
a->DoSomething();
delete a;
return 0;
}
我在考虑,以防我重构代码(或其他人重构代码)并将其放到应用程序的其他位置,需要真正需要delete
时。
除了Brian R. Bondy的答案(它具体讨论了C++中的影响),Paul Tomblin也对一个关于C的问题给出了很好的答案,该答案还谈到了C++析构函数。