c++ - 重置 CRT 调试堆中的高水计数

标签 c++ visual-c++ memory-management msvcrt crtdbg.h

_CrtMemCheckpoint() 返回的 _CrtMemState 结构包含一个 size_t lHighWaterCount 成员,该成员提供自应用程序启动以来的最大内存使用量。我正在编写一个关心高水位线的测试设备,但它在一次运行期间运行多次测试,并且我只能可靠地获得第一个测试的高水位线:如果高水位线在运行期间没有上升第二次测试,我只知道高水位线小于或等于第一次测试的高水位线。

有没有办法将 CRT 调试堆的高水位标记重置为当前分配大小?

最佳答案

不,无法重置此计数器。

考虑替代解决方案:在每次测试开始时注册一个分配 Hook (通过 _CrtSetAllocHook ),在测试期间保持您自己的高水位计数,然后在测试结束时取消注册您的 Hook 。

关于c++ - 重置 CRT 调试堆中的高水计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589119/

相关文章:

c - 结构数组中的动态分配内存(C 语言)

c# - 将 C++ 数组返回到 C#

c++ - 如何阻止编译器删除我的函数

c++ - Cmake : how to append string to the variable via command line?

c++ - C++ 中的翻译单元与编译单元与目标文件与可执行文件与....

visual-c++ - 使用 VC++ 将 Postscript 文档发送到打印机

c++ - 通过 ShellExecuteInfo 提升进程 - 无限壳?

c - 在标准 C 中使用 char 数组存储多种数据类型

ios - iOS 内存不足问题

c++ - 如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)