我正在编写一个基于 qt 的 C++ 应用程序,我需要能够检测内存碎片,以便检查当前系统是否能够真正承受内存负载:程序加载一个大图像(15/21 兆像素是标准)在内存中,然后对其执行一些过滤(使用稀疏矩阵)。
例如,我在 Windows 中遇到内存碎片问题,VMMap 在这方面非常有帮助:问题是一些 DLL(Wacom 数位板“wintab32.dll”和 UltraMon 应用程序)没有重新定位,因此正在分割地址空间在进程的 0x10000000-0x30000000 VA 处。
我想为应用程序提供对碎片问题的某种认识,并想知道提供 VMMAP 信息的跨平台 (linux/mac/win32) 方法是否已经存在。
简短的回答:没有便携的方式。
更长的答案:堆的实现方式及其工作方式是实现的实现细节,在平台、std 库和操作系统之间存在很大差异。您必须为每个实现创建不同的版本 - 前提是该实现为您提供了一个 API 来挂钩它。 (哪个I think您的目标三个平台应该是这种情况。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)