决定提一个有点难度的问题,关于new/delete 的重载

Kevin_qing 2001-07-16 10:03:55
有没有办法做到在一个.cpp里面使用某一个new/delete对,在另外一个.cpp里面使用另外一对?

使用不同的new可以通过宏实现,但是我没有办法使用不同的delete,因为delete只能是void delete(LPVOID)类型。
...全文
186 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kevin_qing 2001-07-19
结贴,参与者每人10分。
问题解答在
http://www.csdn.net/expert/topic/196/196642.shtm
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-18
在MFC生成的代码里面new会被重新定义为DEBUG_NEW(DEBUG模式)
  • 打赏
  • 举报
回复
lvfengxun 2001-07-18
我不知道你为什么要用那么复杂的宏定义
///
LPVOID operator new(size_t size,LPCSTR file);
#define DEBUG_NEW new(__FILE__)
#define new DEBUG_NEW

//
直接定义
#define new new(__FILE__)
就OK了
  • 打赏
  • 举报
回复
lvfengxun 2001-07-18
直接重载
void operator delete(LPVOID lpBuff)
{
//code your codeing
//codeing end
}
就OK了
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-18
没有人关心了吗?
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-18
提前
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-18
算喽~明天我散分
  • 打赏
  • 举报
回复
isdom 2001-07-17
?? new / delete 可以重载的呀
class A
{
static void *operator new(size_t size);
static void operator delete(void *p);
};

这样对 p = new A; delete p 的操作就调用上面重载的,而不是全局的 new / delete
而对别的类没有关系。
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
没有人了吗?继续讨论啊~快来人
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
重载我早就实现了,不过delete没有办法传递多个参数。
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
oka~

比如我可以在a.cpp里面定义
LPVOID operator new(size_t size,LPCSTR file);
#define DEBUG_NEW new(__FILE__)
#define new DEBUG_NEW

这样这个文件里面的所有new操作就被替换为我自己的new了。
但是delete不能这么做,因为delete只接收一个参数void *,所以没有办法使用函数重名+define来调用不同的delete

  • 打赏
  • 举报
回复
SuperChen 2001-07-17
如果是使用 C++ Class 中重載 new, delete operator的方式,應該可以實現, 可能寫起來會囉唆一些. 具體可以看看 CSDN 開發文檔中 lostmouse 所翻譯的Effective C++ 2e Item10
  • 打赏
  • 举报
回复
longwx 2001-07-17
没看懂,举个例子好吗?
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
提前
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
operator delete 也支持附加参数,只是没有办法调用.只能通过对应的new失败来调用
  • 打赏
  • 举报
回复
SuperChen 2001-07-17
operator new 支持附加參數, operator delete 不支持, 好像確實沒辦法了.
  • 打赏
  • 举报
回复
liu_feng_fly 2001-07-17
听课中
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
#undef 没有用,也试过了
  • 打赏
  • 举报
回复
gameboy999 2001-07-17
也许只有用#undef...
  • 打赏
  • 举报
回复
Kevin_qing 2001-07-17
注意,我现在讨论的是全局的new/delete
  • 打赏
  • 举报
回复
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2001-07-16 10:03
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……