c++中new是指分配内存空间,通常分成两步:
第一步:调用alloc 申请内存
第二步:调用类的构造函数,初始化新申请的内存空间
如:
class T
{
int value;
T(int value)
{
this.value = value;
}
};
创建一个T对象:
T *t = new T(4);
在内存中执行顺序:
T * tmp = (T*) (::opreate new(sizeof(T)); //第一步
t = new(tmp) T(4); //执行构造函数, place new 操作
我们知道,new是在堆中分配空间,那么这时的t是指向堆还是栈中的内容呢?画个图就明白了