gpt4 book ai didi

c++ - 覆盖全局 operator new 以跟踪巨大的内存分配?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:11 25 4
gpt4 key购买 nike

我正在尝试生成大型单体应用程序的特殊构建。我试图解决的问题是跟踪难以重现的巨大内存分配(30-80 GB,根据操作系统报告判断)。我认为问题是 std::vector 调整为负 32 位整数值。表现出这种行为的唯一平台是 Solaris(也许它是唯一能够成功分配此类连续内存块的平台)。我可以用我的类全局替换 std::vector ,将所有调用委托(delegate)给真实 vector ,观察可疑分配 (size > 0x7FFFFFFFu) 吗?也许有选择地替换采用 size_tresize() 方法的构造函数?甚至可能劫持新的全局运营商?

最佳答案

为什么不做这样的事情呢?

void *operator new(size_t size)
{
// if (size > MAX_SIZE) ...
return malloc(size);
}

void *operator new [](size_t size)
{
// if (size > MAX_SIZE) ...
return malloc(size);
}

if 中设置断点会立即发现问题。

关于c++ - 覆盖全局 operator new 以跟踪巨大的内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370399/

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