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[]的标准库函数释放内存空间。
本文详细介绍了C++中new和delete表达式的操作过程。new表达式包括分配内存、调用构造函数和返回指针三个步骤,而delete则执行析构函数调用和内存释放两个操作。理解这些机制对于优化内存管理和防止内存泄漏至关重要。
421

被折叠的 条评论
为什么被折叠?



