[008]C/C++系列 | new & delete 内部实现

一、背景

Complex* pc = new Complex(1, 2);
String* ps = new String("hello");
...
delete ps;

上面是一个普遍的new 和 delete 语句,到底new是如何实现的呢?

 

二、原理

 

2.1New

Complex* pc;

void* mem = operator new( sizeof(Complex) );  // 分配内存
pc = static_cast<Complex*>(mem);              // 转型
pc->Complex::Complex(1, 2);                   // 构造函数

 

2.2Delete

String::~String(ps);     // 析构函数
operator delete(ps);     // 释放内存



class String
{
public:
    ~String()
    { delete[] m_data; }
    ...
private:
    char* m_data;
};

注意:

operator new  和 operator delete 是C++里面一个特殊函数!!!

其先内部调用 malloc(n) 和 free(ps)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章