复习智能指针时正好看到new的最基本用法:
内置的new操作符,经常使用的T *ptr = new T(),分配内存,调用构造函数
- 调用operator new分配内存,operator new (sizeof(A))
- 调用构造函数生成类对象,A::A() ,调用placement new
- 返回相应指针
事实上,分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator new,那么将调用A::operator new(size_t ),否则调用全局::operator new(size_t ),后者由C++默认提供。
1. 智能指针:https://www.cnblogs.com/wuyepeng/p/9741241.html
如果我们不在每一个可能跳转或者返回的语句前释放资源,就会造成内存泄露。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。