<分区>
我有一个程序可以执行以下操作
- 分配内存(堆)
- 做一些处理
- 分配更多内存(堆)
- 做一些处理
它会这样做几次然后退出。
我并不真正关心程序的内存占用,只关心执行时间。
不释放帐户上的内存是否是一件坏事,因为它实际上可能需要更多时间来处理释放/删除,而不是跳过它并转到下一步。
最后,程序会退出,也就无所谓了。
我知道唯一可以确定的方法是在我的计算机上进行一些基准测试,但我对理论上的优缺点很感兴趣。
注意:让我们假设一个现代操作系统将在退出时清理内存。
<分区>
我有一个程序可以执行以下操作
它会这样做几次然后退出。
我并不真正关心程序的内存占用,只关心执行时间。
不释放帐户上的内存是否是一件坏事,因为它实际上可能需要更多时间来处理释放/删除,而不是跳过它并转到下一步。
最后,程序会退出,也就无所谓了。
我知道唯一可以确定的方法是在我的计算机上进行一些基准测试,但我对理论上的优缺点很感兴趣。
注意:让我们假设一个现代操作系统将在退出时清理内存。
最佳答案
存在许多潜在问题。示例包括;
malloc()
使用的数据结构),如果内存未释放,分配本身会变慢。这可能会导致您的程序在分配更多内存时不满足时序约束。在不再需要时释放内存可以减轻此类担忧(尽管会产生其他影响,例如内存碎片)。底线是,如果您非常关心程序性能或时序,分配内存而不取消分配内存是一种非常糟糕(而且懒惰)的策略。如果您真的关心程序性能/时序,您实际上根本不会动态分配内存。
如果您正在使用动态内存分配,那么最好在不再需要时释放它,即使您不关心内存占用。根据具体情况,如果您正确释放内存,您可能会发现程序运行得更快或更慢(这取决于许多变量,包括我上面提到的那些,等等)。而且,如果您需要在更大的程序中重用您的代码——实际上,这种情况在现实世界中经常发生——如果您的代码没有发布,您更有可能遇到问题(内存问题、性能问题)正确内存。
关于c++ - 如果内存占用不是问题,我应该为一个短暂的程序释放内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869354/