概述
运算符 new 和 delete 看起来很简单,但是它们也有不少的知识点。对于new来说就有 new operator、operator new、placement new 和 new operator[]等。对于 delete 也有 delete operator、poerator delete、delete operator[] 等。下面就进行按个整理。
1、new operator
平时申请动态内存的 new 操作就是new operator。它其实由两个步骤完成:
1、分配足够的内存,用来放置某类型对象。
2、调用构造函数,为刚才分配内存中的那个对象设定初值。
new operator 调用某个函数,执行内存分配的动作,这个函数就是 operator new。
2、operatr new
上面说了一个分配内存的函数叫 operator new ,可以用来改变内存分配行为。其函数声明通常为:
void* operator new( size_t size);
此函数返回一个指针,指向一块原始的、未设初始值的内存。size_t是分配内存的大小。
你可以对 operator new 重载,加上额外的参数,但第一个参数类型必须总是 size_t。
和malloc一样,operator new 唯一的任务就是分配内存。它不知道什么时候进行初始化操作。
3、placement new
在已分配好的内存