greeksforgreeks上一个题解释new的时候编译器都会做什么

看下面代码输出:

#include
#include
 
using namespace std;
 
class Test {
public:
    void* operator new(size_t size);
    void operator delete(void*);
    Test() { cout<<"\n Constructor called"; }
    ~Test() { cout<<"\n Destructor called"; }
};
 
void* Test::operator new(size_t size)
{
    cout<<"\n new called";
    void *storage = malloc(size);
    return storage;
}
 
void Test::operator delete(void *p )
{
    cout<<"\n delete called";
    free(p);
}
 
int main()
{
    Test *m = new Test();
    delete m;
    return 0;
}

greeksforgreeks上一个题解释new的时候编译器都会做什么_第1张图片

new的时候先分配内存,然后调用构造函数进行初始化;

delete时候先调用析构函数做清理工作,然后释放内存。


这里重载了new delete后看的更清楚了。

你可能感兴趣的:(C,C++)