是否应该在 main 中的 return 语句之前释放内存?

Beg*_*ner 4 c++ memory-leaks memory-management

考虑这个小程序:

int main(int argc, const char *argv[])
{
    int *i = new int;
    //do something with i, where i is involved all the time
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为一种良好的风格,并表明您实际上知道您必须释放分配在通常delete i;在 return 语句之前添加的堆上的内存。

但是如果离开会不会有什么坏处delete i;

更新:请不要在评论中互相指责。我确实知道,为了安全起见,就像良好的风格一样,我应该释放分配的内存。问题是,在这种特殊情况下是否可以安全地省略它。

Ken*_*nde 5

这应该无关紧要,因为现代操作系统倾向于在程序终止后清理程序的内存。话虽如此,我很确定一些较旧的系统不会进行清理,因此如果您针对这些系统中的任何一个,那么您肯定要小心。

不管这两点,知道你的代码不会泄漏,你会睡得更好吗?