1、new和delete表达式的工作机理
1)new表达式实际执行了三步
string *sp=new string(“aaaa”);
string *arr=new string[10];//string采用默认初始化
a、调用一个名为operator new(或者operator new[])的标准库函数,分配一块足够大的、原始的、未命名的内存空间,来准备存储对象或者对象的数组;
b、编译器运行相应的构造函数构造这些对象,在这里运行的是string的构造函数;
c、返回一个指向该对象或者对象数组的指针。
2)delete执行了两步操作:
delete sp;
delete []arr;
a、对sp或者arr所指的数组中的元素执行相应的析构函数;
b、编译器调用名为operator delete或者operator delete[]的标准库函数释放内存空间。