首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

定位new表达式有关问题

2012-03-03 
定位new表达式问题我在一教材中看到new的用法是这样的:new(place_address)type-specifier;其中,place_addr

定位new表达式问题
我在一教材中看到new的用法是这样的:
    new   (place_address)   type   -specifier;
其中,place_address是一指针,但我搞不清   type   -specifier指的是什么。请懂行的同学帮我解释一下。我是这样理解的:唯一特定类型。如:int   *p=new   int[10];
                                                                                                                int   *pt=new(p)int;
但是我在一些资料上看到有这样的例子:
    int   *p=new   int[10];
    int   *pt=new(p)int[5];
我实在是一头雾水,请大家帮帮忙!!!!
谢谢!!!

[解决办法]
new (place_address) type -specifier
在指定内存place_address处构造type -specifier对象.

class One
{
//......
};

int arr[100];//假设arr的空间足以容纳One的对象.
One* p= new(arr) One;//可以在这里构造一个One的对象.

void * pv=malloc(sizeof(One));
One* p= new(pv) One;//也可这样构造一个One的对象.

也就是定位new只负责构造对象,不负责分配内存.

[解决办法]
int *p=new int[10];
int *pt=new(p)int[5];

第一个是说申请了一块内存,大小是int[10],指针p指向它的首地址

第二个是说在上面申请好的那10个int里面,占用它的前5个,并用指针pt指向它的首地址。

其实很明显了,pt和p指向的是一个地方。

p和pt分别对应的内存是有5个重复的。

pt在p开辟的10个int内存里取了前5个,来进行它自己的操作

热点排行