gpt4 book ai didi

c++ - 回归测试如何证明是否调用了 VirtualAlloc?

转载 作者:可可西里 更新时间:2023-11-01 11:50:11 26 4
gpt4 key购买 nike

我正在为正在优化的 (Win7) C++ 例程编写回归测试,该例程以前释放并重新分配了许多巨大的缓冲区:内存流失。我想证明在测试期间,程序没有分配任何大内存区域(比如 16M 或更大),而是有效地重新使用在初始化时分配的内存。归根结底,如果调用 VirtualAlloc 来获取某个大区域(比如 16M),测试应该会失败。

是否有一种优雅的方法来计算对 Windows VirtualAlloc 调用的统计信息?这将成为永久自动回归测试套件的一部分,因此使用外部工具或修改下游代码是不可行的。

检查提交的总内存不太适合,因为我想断言例程不再搅动(释放和重新分配缓冲区。)

最佳答案

Hook

Detours可以 Hook 任意方法调用,但是

  • 仅可免费用于非商业用途
  • 这对于单元测试来说可能有点矫枉过正

RohitabEasyhook似乎提供了类似的东西。

备选方案

如果您的进程是 32 位的,您可以提前分配 4080 MB(或多或少),并且对 VirtualAlloc 的更多调用将会失败。这不包括您多次分配/取消分配 16 MB 的情况。如果保留这 4080 MB,这甚至会很快,因为不需要实际内存。

关于c++ - 回归测试如何证明是否调用了 VirtualAlloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711294/

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