内存分配方式有3种:
(1)从静态存储区分配
(2)在栈上分配
(3)从堆上分配
malloc/free(库函数) vs new/delete(运算符)
new直接返回目标类型的指针,不需要显式转换,而malloc则返回void *,必须首先显式地进行目标类型转换
new的3种使用方式
(1)plain new:在失败后抛出标准异常std::bad_alloc
(2)nothrow new:不抛出异常的运算符new的形式,在失败时返回NULL
(3)placement new:在一块已经分配成功的内存上重新构造对象或者对象数组
用对象模拟指针(对付内存泄露)
思想:RAII(Resource Aquisition Is Initialization)(以对象来管理资源)