class Test
{
..........
}
int main()
{
char* buffer=new char[512];
Test *pc1;
pc1=new (buffer)Test;//what does it mean?
..................
首先:
char* buffer=new char[512];
这里动态分配了512g个char的内存空间A。
pc1=new (buffer)Test;占用以是A的首地址为起点A的空间。
也就是说,比如空间A占的地址是:
0x000000 0x000004 0x000008 0x00000c
假设Test的类是这样的:
class Test{public:int a;int b;}
那么上面的表达式:
Test中a,b占用的空间是A的,a的地址&a其实就是&buffer[0].
由于一个int增加4,所以b的地址&b就是&buffer[0+4];
理解意思了?
首先:
char* buffer=new char[512];
这里动态分配了512g个char的内存空间A。
pc1=new (buffer)Test;占用以是A的首地址为起点A的空间。
也就是说,比如空间A占的地址是:
0x000000 0x000004 0x000008 0x00000c
假设Test的类是这样的:
class Test{public:int a;int b;}
那么上面的表达式:
Test中a,b占用的空间是A的,a的地址&a其实就是&buffer[0].
由于一个int增加4,所以b的地址&b就是&buffer[0+4];
理解意思了?
正确