我已经重载了全局的operator new/delete/new[]/delete[],但简单的测试表明,虽然我的new和delete版本被正确调用,但使用new[]和delete[]进行简单的数组分配和删除会导致newaop.cpp和delete2.cpp中的实现被调用。
例如,以下代码:
int* a = new int[10];
在newaop.cpp中调用operator new[],进而调用了我的版本的operator new。所以它们似乎是全局重载的,但由于某些原因不包括数组版本。我是否遗漏了什么?
编辑:我的运算符实现在一个单独的项目中,编译为库并静态链接。回想起来,这可能有助于包含在原始帖子中,因为它可能与此有关。尽管我仍然无法弄清楚为什么只影响数组版本。
newaop.cpp
和delete2.cpp
是什么? - Gregory Pakosznew int[10]
调用了你的函数。你能提供一个完整的测试案例并解释实际行为与你期望的有何不同吗? - Roger Pate