1、new operator:string *ps = new string("abcd");分配内存+调用构造函数初始化内存中的对象
delete的时候:delete(ps);操作是 删除内存+执行析构函数;
2、operator new:void *raw = operator new(sizeof(string));只分配内存,不调用构造函数;同c语言中的malloc
delete的时候:delete (raw);操作是删除内存,但不执行析构函数;
3、placement new:
只调用构造函数,不分配内存;这个函数返回一个指针,这个指针不是本函数直接分配的内存,是已经存在的内存,调用构造函数初始化后在返回指针。
不需要delete这个指针,所以不存在释放内存或者调用析构函数,因为你并不知道这个指针是在哪里分配的!