string *ps = new string("Memory Management");----------new operator
①它分配足够的内存,用来设置某类型的对象
②它调用一个constructor,为刚才分配的内存中的那个对象设定初值
new operator总是做这两件事,无论如何你不能改变其行为,你能改变的是用来容纳对象的那块内存的分配行为。
new operator调用某个函数,执行必要的内存分配动作,你可以重写或重载那个函数,改变其行为。
delete operator做与new operator相反的动作。例如:
string *ps;编译器近似产生以下代码:ps->~string();
delete ps; operator delete(ps);
这里呈现的一个暗示就是,如果你只打算处理原始的,未设初值的内存,应该完全回避new operator和delete operator,改调用operator new取得内存并以operator delete归还给系统:
void *buffer = operator new(50*sizeof(char));
operator delete(buffer);