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

这个new的用法哪位高手给解释一下

2013-10-14 
这个new的用法谁给解释一下atlcoll.h里面有如下代码,这个::new( pElements+iElement ) E 是什么用法? new

这个new的用法谁给解释一下
atlcoll.h里面有如下代码,这个::new( pElements+iElement ) E; 是什么用法? new(直接跟指针)

void CAtlArray< E, ETraits >::CallConstructors( E* pElements, size_t nElements )
{
size_t iElement = 0;

_ATLTRY
{
for( iElement = 0; iElement < nElements; iElement++ )
{
::new( pElements+iElement ) E;
}
}
_ATLCATCHALL()
{
while( iElement > 0 )
{
iElement--;
pElements[iElement].~E();
}

_ATLRETHROW;
}
}

[解决办法]
placemnet new,其它自己google
[解决办法]
对于 调用 new operator实际上是分了两部分
1 调用了 operatpr new()
这个函数这是分配内存。 这是全局级别的。你可以重写。按照自己的分配方式。
这主要用在有自己的内存管理模块。
重写该函数,在该函数内调用自己的内存管理模块的分配内存的函数。
2 分配了内存就要初始化,这就要调用构造函数
  所以使用了placement new。 这个函数式不可以重写的。

热点排行