还是STL问题
又遇到STL问题拉!请帮忙?template <class T> class malloc_allocator
{
public:
void construct(pointer p, const value_type& x) {
new(p) value_type(x); //帮忙解释以下语法?
}
void destroy(pointer p) { p->~value_type(); }
...
};
“placement new”的用法:
> new(p) value_type(x);
在p所指向的内存处初始化一个对象,即这种形式的new本身不分配内存,而是利用已有内存。
需要注意的是,当释放这块内存时,内存上的对象的析构函数并不会被调用,所以需要自己调用它的析构函数,如:
> p->~value_type();
想了解更多,请参考C++教程。
那就是说 new(p) value_type(x); 是分配了一个p让P指向了一个value_type型的 x
// 引用上面:即这种形式的new本身不分配内存,而是利用已有内存。不大明白?
[此贴子已经被作者于2007-1-26 12:29:38编辑过]