我有一个程序,会执行以下操作:
我并不关心程序的内存占用情况,只关注执行时间。
如果不释放内存,是否会有问题呢?因为释放内存可能比跳过并继续下一步骤更耗时。
最终,程序将退出,这就不再重要了。
我知道唯一确定的方法是在计算机上进行一些基准测试,但我对理论上的优缺点很感兴趣。
注:假设使用现代操作系统,在退出时会清理内存。
- 分配内存(堆)
- 进行一些处理
- 再次分配内存(堆)
- 进行一些处理
我并不关心程序的内存占用情况,只关注执行时间。
如果不释放内存,是否会有问题呢?因为释放内存可能比跳过并继续下一步骤更耗时。
最终,程序将退出,这就不再重要了。
我知道唯一确定的方法是在计算机上进行一些基准测试,但我对理论上的优缺点很感兴趣。
注:假设使用现代操作系统,在退出时会清理内存。
free()
会节省时间。 - Stargateurfree
释放了一个内存块,这个内存块可以让下一次调用malloc
更快地找到一个合适的块。因此,摊销时间会更好。 - StoryTeller - Unslander Monicafree
,未来的malloc
可能会重复使用先前malloc
的内存。这可以节省时间,因为旧内存不必从操作系统中获取,并且很可能已经在缓存中。页面错误和缓存未命中可能会使事情变得相当慢。 - Petr Skocik