_CrtMemState
由返回的结构_CrtMemCheckpoint()
包含一个size_t lHighWaterCount
成员,该成员给出了自应用程序启动以来的最大内存使用量。我正在编写一个关心高水位线的测试台,但它在一次运行中运行多个测试,我只能在第一次测试中可靠地获得高水位线:如果高水位线在第二次测试,我只知道高水位线小于或等于第一次测试。
有没有办法将 CRT 调试堆的高水位标记重置为当前分配大小?
_CrtMemState
由返回的结构_CrtMemCheckpoint()
包含一个size_t lHighWaterCount
成员,该成员给出了自应用程序启动以来的最大内存使用量。我正在编写一个关心高水位线的测试台,但它在一次运行中运行多个测试,我只能在第一次测试中可靠地获得高水位线:如果高水位线在第二次测试,我只知道高水位线小于或等于第一次测试。
有没有办法将 CRT 调试堆的高水位标记重置为当前分配大小?
不,无法重置此计数器。
考虑另一种解决方案:在每个测试开始时注册一个分配挂钩(通过_CrtSetAllocHook
),在该测试期间保持您自己的高水位计数,然后在测试结束时取消注册您的挂钩。