首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在win32 dll中满载operator delete(void *p)

2012-09-18 
在win32 dll中重载operator delete(void *p) ?看more effective c++中说可以重载operator new 和 operator

在win32 dll中重载operator delete(void *p) ?
看more effective c++中说可以重载operator new 和 operator delete.

我把new用宏定义为多参数形式,如new(__FILE__, __LINE__),把operator new定义成对应的形式,如void* __cdecl operator new(size_t, char*, int),这样不论是放到dll或者.h .cpp放到工程目录下都可以.

但是重载operator delete就会有问题:
1.我如果把operator重载为对应operator new的多参数形式,win32 dll或者.h .cpp到工程目录下都可以,但是测试delete不会进入我重载的operator delete中.为什么?
2.重载operator delete(void*)的话,把.h .cpp放到工程目录下,这时候测试delete会进入我重载的operator delete中.为什么?CRT的operator delete不会与我定义的冲突吗?
3.但是在win32 dll中,会报error C2375: 'operator delete' : redefinition; different linkage的错.为什么?

谢谢!





[解决办法]
你打开new.h或者new文件,看一下编译器给的申明。
估计你漏了throw方面的异常规格说明。

[解决办法]
搜索了半天,给你找到一篇相关资料,应该可以解决你的问题:http://blog.vckbase.com/bruceteen/archive/2008/08/13/34641.html

热点排行