new 还有一种形式是布局new ,
int buffer2 = new int [10];
int * p4=new (buffer2) int [20];`
则 以p4为首地址的数组,会使buffer2的为首地址的内存块
placement new操作符使用的是静态内存,而不是动态分配的内存。这就意味着,不能用delete操作符来对它进行内存释放
当两个new出来的内存是根据同一个类型的首地址分配的,那么他们指向的是同一块存储单元。不会出现一个被挤走的情况
#include <iostream>
#include <new>
using namespace std;
int main()
{
int * a = new int[10];
int * b = new (a) int [20];
int * c = new (a) int [20];
b[0] = 1;
cout<<b[0]<<endl;
c[0] = 22;
cout<<b[0]<<endl;
}
结果是 1 22;