关于重载new,请前辈们解疑.....

来源:百度知道 编辑:UC知道 时间:2024/06/14 09:11:18
int size=10;
int *pr=new(size*sizeof(int));和int *pr=new int[size];意义和效果一样吗?都是指向int数组类型吗?
也就是effectiveC++上的一句代码:
airplane *newblock =static_cast <airplane*>(::operator new(block_size *sizeof(airplane)));
newblock怎么会是一个指向airplane类型数组的指针?
这个::operator new(block_size *sizeof(airplane)));开辟了(block_size *sizeof(airplane))大的内存
static_cast <airplane*>把返回的地址强制转化为Airplane类型的指针
airplane *newblock就应该是指向这个地址的指针,这样理解对吗?
newblock++应该指向哪里?

你自己不也说了么,这里的new是重载过的啊.那就要看这个重载的new函数干了什么事情啊.没准它就是和new int[size]一样,是生成了一个数组空间.
但不管new干了什么事,newblock++肯定只移动了和airplane结构字节数一样大的距离.