区别表达式new与delete与operator new与operator delete
表达式new工作原理
- 调用名为operator new或者operator new[]的标准库函数。该函数分配一块足够大的、原始的、未命名的内存空间。
- 编译器运行相应的构造函数以构造这些对象,并为其传入初始值。
- 内存被分配了空间并构造完成,返回一个指向该对象的指针。
表达式delete工作原理
- 对指针所指对象或数组中的元素指向对应的析构函数。
- 编译器调用名为operator delete或者operator delete[]的标准库函数释放内存空间。
程序使用动态内存的原因
- 程序不知道自己需要使用多少对象
- 程序不知道所需对象的准确类型
- 程序需要在多个对象间共享数据