我正在尝试生成一个特殊的大型单片应用程序.我试图解决的问题是跟踪难以重现的巨大内存分配(30-80千兆字节,根据操作系统报告来判断).我相信问题是std :: vector调整为负32位整数值.唯一表现出这种行为的平台是Solaris(也许它是唯一能够成功分配这些连续内存块的平台).我可以用我的类全局替换std :: vector,将所有调用委托给真正的向量,观察可疑的分配(size > 0x7FFFFFFFu)吗?也许有选择地替换采用的构造函数size_t和resize()方法?甚至可能劫持全球运营商新品?
为什么不这样做呢?
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);
}
Run Code Online (Sandbox Code Playgroud)
在中设置断点if会立即发现问题.