素槿
Published on 2025-08-22 / 3 Visits
0

C++-new-del-重载

例子

#include <iostream>

class test
{
private:
public:
    void* operator new(size_t size)
    {
        std::cout << "reload new\n";
        return malloc(size);
    }
    void operator delete(void* ptr)
    {
        std::cout << "reload del\n";
        return free(ptr);
    }
    test()  = default;
    ~test() = default;
};

void* operator new(size_t size)
{
    std::cout << "g reload new\n";
    return malloc(size);
}
void operator delete(void* ptr)
{
    std::cout << "g reload del\n";
    return free(ptr);
}

int main(int argc, char const* argv[])
{
    test* t = new test;
    delete t;

    int* i = new int(4);
    delete i;

    return 0;
}

输出

reload new
reload del
g reload new
g reload del