c++ - 内存密集型应用程序中的内存管理

标签 c++ windows optimization memory-management

如果您在 Windows 上使用 C++ 开发内存密集型应用程序,您是选择编写自己的自定义内存管理器以从虚拟地址空间分配内存,还是允许 CRT 控制并为您进行内存管理?我特别关心堆上小对象的分配和释放造成的碎片。因此,我认为即使内存足够但碎片化,进程也会耗尽内存。

最佳答案

我认为最好的办法是在配置文件证明 CRT 正在以一种损害应用程序性能的方式产生内存碎片之前不要实现它。 CRT、核心操作系统和 STL 人员花费大量时间思考内存管理。

很有可能您的代码无需更改即可在现有分配器下正常运行。与您第一次获得正确的内存分配器相比,这肯定有更好的机会。我以前为类似情况编写过内存分配器,这是一项艰巨的任务。不出所料,我继承的版本充满了碎片化问题。

等到配置文件显示存在问题的另一个好处是,您还会知道自己是否真的修复了任何问题。这是性能修复中最重要的部分。

只要您使用的是标准集合类和算法(例如 STL/BOOST),就不难在稍后的周期中插入一个新的分配器来修复您的代码库中执行以下操作的部分需要修复。您不太可能需要为整个程序手动编码分配器。

关于c++ - 内存密集型应用程序中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/473958/

相关文章:

c++ - Typedef C++,无法解析其含义

c++ - Qt keyPressEvent 处理程序仅在按下 ctrl、alt 或 shift 键时使用react

windows - 使用 setx 后如何检索值?

list - Haskell - 将列表分成两个总和最接近的子列表

gcc - 为什么for循环比预期多1条指令?

c - 矩阵库 : inline vs define

c++ - 如何避免 LLVM 的 Support CommandLine 泄漏库参数?

c++ - 模板函数导致找不到标识符

windows - 失去本地主机网络连接的机会?

c# - 如何在C#中跟踪Windows事件