#include<iostream>
#include<algorithm>
using namespace std;
void* operator new(size_t size,const char *msg,int line)
{
cout<<"the file:"<<(char*)msg<<" line number:"<<line<<" and size is:"<<size<<endl;
return malloc(size);
}
class Widget
{
public:
Widget(int _id):id(_id){}
void SayHello()
{
cout<<"my id:"<<id<<endl;
}
~Widget(){};
private:
int id;
};
#define GC_NEW new(__FILE__,__LINE__)
#define new GC_NEW
int main()
{
Widget *wid=new Widget(2012);
delete wid;//为简化代码使用系统中的operator delete,程序运行时会出现问题,实际编程中应该自定义相应的operator delete
}C++中通过自定义operator new 实现内存分配跟踪
C++内存管理
最新推荐文章于 2024-07-21 16:17:39 发布
本文介绍了一个C++自定义new操作符的例子,展示了如何在构造对象时记录文件名、行号及分配大小,并给出一个简单的Widget类实例。
617

被折叠的 条评论
为什么被折叠?



