gpt4 book ai didi

c++ - 视觉 C++ : possible to limit heap size?

转载 作者:可可西里 更新时间:2023-11-01 13:59:24 35 4
gpt4 key购买 nike

我正在调试的应用程序有问题。稳态内存使用量为几百兆字节。有时(几个小时后)它会进入内存使用量飙升至数 GB 的状态。我希望能够在发生这种情况时立即停止程序。

在控制通过我自己的代码的地方,我可以用这样的代码来捕获过多的内存使用:

bool usingTooMuchMemory()
{
PROCESS_MEMORY_COUNTERS pmc;
if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof pmc))
return pmc.WorkingSetSize > 0x80000000u; // 2GB working set
return false;
}

这对我没有帮助,因为我需要在正确的点测试工作集大小。我真的希望程序在第一个使用工作集或堆大小超过某个阈值的 mallocnew 时中断。理想情况下,我希望 CRT 堆本身以最小的开销完成这项工作,因为该库喜欢分配大量的小块。

可疑代码位于我的调用代码创建的线程中运行的 DLL 中。 DLL 静态链接到 CRT,没有特殊的堆管理。我有 DLL 的源代码。

有什么想法吗?我是否遗漏了一些明显的东西?

最佳答案

您可以使用 _CrtSetAllocHook 设置内存分配和释放 Hook .

关于c++ - 视觉 C++ : possible to limit heap size?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5578008/

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