#include <iostream>
using namespace std;
//重载new 和delete
void* operator new(size_t size) {
cout << "重载全局的new构造函数:" << size << "字节\n";
void* ptr = malloc(size);
cout << "内存地址为:" << ptr << endl;
return ptr;
}
void operator delete(void* ptr) {
cout << "重载全局的delete析构函数\n" ;
if (ptr == nullptr)return;
cout << "析构地址为:"<<ptr << endl;
free(ptr);
}
class A {
public:
int a;
int b; int c;
A(int a) {
this->a = a;
}
void* operator new(size_t size) {
cout << "重载类的new构造函数:" << size << "字节\n";
void* ptr = malloc(size);
cout << "内存地址为:" << ptr << endl;
return ptr;
}
void operator delete(void* ptr) {
cout << "重载类的delete析构函数\n";
if (ptr == nullptr)return;
cout << "析构地址为:" << ptr << endl;
free(ptr);
}
};
int main()
{
//int* a = new int(3);
//delete a;
A* a = new A(3);
delete a;
}
重载new 和delete
最新推荐文章于 2024-10-04 17:07:53 发布