【发布时间】:2012-09-13 21:25:24
【问题描述】:
您好,我正在使用一个全局覆盖新/删除的库。但是我对这个库有一个问题,问题是它必须在main函数中手动初始化。
现在我正在尝试使用另一个库,在调用 main 之前初始化一些函数,不幸的是,这个库在这些函数中使用了 new。所以我收到错误,因为使用覆盖的 new/delete 关键字的内存管理器尚未初始化。
我真的很想使用默认的内存管理器,因为我想在这个库中添加单元测试。使用我要测试的库也被我的单元测试库使用的内存没有多大意义。
所以我的问题是,是否可以在包含第二个库时忽略全局覆盖的 new/delete 而只使用默认的 new/delete?
我在 Windows 7 上使用带有标准 C++ 编译器的 Visual Studio 2010。
【问题讨论】:
-
答案取决于平台和/或编译器。
-
您是开发这两个库还是第三方库?如果您可以控制内存管理代码,我会偏离覆盖 new/delete 并以
std::tr1::shared_ptr的样式创建一个内存管理对象。 -
@count0 我们开发了内存管理器库。它是具有高度优化的垃圾收集器的自定义内存管理器。我正在尝试使用 boost 测试库进行单元测试。
-
然后使用内存管理对象,这是更简洁的设计,恕我直言。检查 Scott Meyers:有效的 C++:第 13 项。
-
不是我设计的。我刚开始在这里工作 ;-),我还不会质疑我的 Boss Programmer 的智慧。
标签: c++ visual-studio