标签:
new和delete的基本概念new所隐含的三步内容
delete所隐含的两步内容
//auto pi = new int; // built-in type 不完成初始化auto pi = new int{}; // 系统会初始化 = 0//auto = pc new complex<double>;auto = pc new complex<double> {}; // 系统会调用初始化函数
array和vector的使用
class with array的使用Code: https://github.com/weiweikong/Program_Practice/tree/master/160331.Geekband_Homework5
构造指针,从上至下一次创建
operator new/new[]和operator delete/delete[]的讨论operator new/ operator new[] 要求
*voidsize_toperator delete/ operator delete[] 要求
voidvoid*
基本例子
malloc和free的使用要小心
void* operator new(size_t size) {if (void* mem = malloc(size) // 判断是否成功return mem;elsethrow bad_alloc();}void operator delete(void* mem) noexcept{if (mem)free(mem)}
new和delete
Foo* pf = ::new Foo;::delete pf;
new和delete的时机new和delete的效率会很高,对内存池的操作。placement operator newdeletenew的使用和delete要搭配
int* p1 = new int{99}int* p2 = p2;delete p1; // p2 doesn‘t point to a valid objectp1 = nullptr;
void sloppy(){int* p = new int[100];// use *pdeletep[] p;// other codes.delete[] p; // prone to wrong}
delete之前跳出,导致内存泄漏
void f1() {X* p = new X;// ... use *p ...delete p;
void f2() {X x;// ... use x}
virtual
Base* p = new Child;// ... use *pdelete p;
Base需要有virtual dtor,否则就会导致调用dtor错误【C++】Geekband - 专题一:new和delete的整理
标签:
原文地址:http://www.cnblogs.com/kongww/p/5350308.html