c – 如何让我的依赖项调用我的全局运算符new?

我有一个与一些DLL(或.so)链接的测试应用程序.在我的主应用程序中,我定义了一个像这样的全局新/删除

void* operator new(size_t n)
{
    ....
}

void operator delete(void* p)
{
    ...
}

但是我注意到操作符只调用我在主应用程序中分配的内容,但是如果其中一个DLL没有.

如何在DLL中进行分配通过我的运算符new / delete? (这也应该包括由STL分配的内存,所以如果其中一个DLL有一个std :: string,我想在STL分配其std :: string内部缓冲区时调用new operator new).

我对Windows解决方案更感兴趣,但Linux也会受到赞赏.

编辑:也许我最初并不清楚,我正在做的这个测试应用程序是为了跟踪DLL中定义的一些自动生成的类的内存使用情况.创建我自己的分配器并在生成代码STL结构中使用它不是一个选项,更是如此,还有其他非STL分配.但是看到答案,我认为最好的选择是使用分析器或使用perfmon监视内存使用情况.

解决方法:

I’d like my operator new to be called when STL allocates its std::string internal buffer

typedef std :: basic_string< char,std :: char_traits< char&gt ;, ALLOCATOR> MyString的;

DLL中的代码已经使用了自己的新实现,并且没有充分的理由为什么定义自己的实现应该神奇地改变DLL使用的实现(如果它们使用自己的自定义实现呢?).

因此,如果您希望字符串使用您的分配器,则需要显式创建它们.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...