为什么需要显式删除动态分配的内存?
当操作系统本身收回进程的内存时,为什么我们需要显式删除动态分配的内存?在构造函数内部分配动态内存的情况下,为什么我们需要在析构函数中删除它?
回答
从某种程度上说,你不具备显式删除分配的内存。您可以让内存泄漏累积,直到程序结束并且操作系统为您回收内存。一个更好的问题是你想要吗?
在您的进程结束之前,操作系统不会回收内存。你能等那么久吗?如果您在程序运行过程中分配的内存少于 1 兆字节,您可能不会看到不良的副作用。但是,如果您的程序可以运行数小时甚至数天,那么会泄漏多少内存?最终你会遇到其他程序变慢的地步,因为你的程序占用了所有内存——它甚至没有使用这些内存;泄漏的内存漂浮在未使用和无法使用的地方。
如果您在程序很小的时候学会了自己清理,那么您将准备好处理可能泄漏系统上所有可用内存的大型项目。此外,在有限资源中不要超过您需要的(或您根据需要合理估计的)是有礼貌的。