gpt4 book ai didi

c++ - 使用预先已知的模式进行内存分配

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:26 25 4
gpt4 key购买 nike

我有一个应用程序,其中 malloc/free 操作的顺序是预先知道的。我想做一个预计算来最小化最大内存使用量。是否有相关资源(C++ 实现/研究论文)?

更准确地说,相同的 malloc/free 操作序列重复多次(在每个循环结束时,所有内容都被释放)。所以我可以负担一些计算来优化内存使用。

最佳答案

假设您想要实现的目标是最大限度地减少分配内存所花费的时间并可能改善缓存局部性,这实际上听起来很简单。

只需选择内存管理器(编写一个或使用一个预先存在的,例如 Hoard)。然后,让内存管理器在程序开始时分配一个循环中使用的最大内存量。

主要问题是计算这个内存量。一个简单的解决方案是使用一个分配器完成一个循环,该分配器除了将 malloc/free 与一个跟踪当前内存使用情况和最大使用情况的计数器包装在一起外什么都不做。在你的周期结束时,这个最大值就是你应该在开始时分配的数量。

需要注意的一件事是分配的内存中的碎片可能会导致需要额外分配。好的内存管理器通常可以避免这种情况。在最坏的情况下,您可能必须分别跟踪为每个分配大小分配的最大内存。

作为旁注,如果您使用的是 C++,为什么要使用 malloc/free 而不是 new/delete?

关于c++ - 使用预先已知的模式进行内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16382074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com