重载new 和delete

#include
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 << "析构地址为:"<     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;
}

你可能感兴趣的:(c++)