C++ operator new 在特定指针处构造初始化
我认为, 从安全和简化代码的角度考虑, 在编写C++代码时,
使用STL或其他模板库自动管理内存,
比通过new关键字或malloc动态声明空间,
更规范更安全, 带来的额外性能开销相比于开发效率的提升, 也可接受.
但在一些应用场景固定的模块中, 手动申请内存会带来更高的执行效率.
使用new可以向系统申请内存, 这也是最常见的做法.
也可以使用new在原指针处构造初始化, 而不申请内存.
new 语法
例如, 定义以下的类, 简单地表示一个点:
class PointD
{
public:
PointD(double x, double y) : x(x), y(y)
{ }
void show() const
{
cout << x << " " << y << endl;
}
private:
double x;
double y;
};
向系统申请内存, 并进行初始化的语句为:
PointD* point = new PointD(0, 0);
不申请内存, 在原指针处进行初始化的语句为:
PointD* point2 = new (point) PointD(2, 2);
执行这两句后, poin