chenjun840168660 2015-12-31 09:41 采纳率: 0%
浏览 2039
已结题

宏替换区分new、new(nothrow)和new placement

目前正在写一个内存泄漏检测的项目,通过重载new和delete的方式实现,重载的new记录了内存申请操作的文件名和行号,重载形式为 operator new(int size ,char*file,int line);

  • 为了使被检测代码使用new的地方调用我们重载版本的new ,需要对被检测的源代码进行宏替换 #define new new(__FILE,__LINE) ; 但是这会引起新的问题,因为有些被检测代码中存在 new(nothrow) 和 new(A,Point*B)(A为一个自定义类型,B指向已经申请了的一片内存空间) ;*宏替换会将new的这两种用法也替换掉 形成 new(__FILE,__LINE) (nothrow)和new(__FILE,__LINE) (A,Point*B) 的形式,*这对于g++编译器是编译通不过的,而且new的这两种用法又无法重载,不知有大神遇到过类似的问题吗,或是有比较好的方法能够比较智能的实现替换,后面两种new的使用不进行宏替换,只进行普通new的替换 。

期待大神解答,急求,急求 !!

  • 写回答

1条回答 默认 最新

  • devmiao 2015-12-31 14:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line