new是什么意思?
What does ::new mean?
在检查MS directX 11 DXUT示例时,出现了以下代码:
template<typename TYPE> HRESULT CGrowableArray <TYPE>::SetSize( int nNewMaxSize )
{
int nOldSize = m_nSize;
if( nOldSize > nNewMaxSize )
{
assert( m_pData );
if( m_pData )
{
// Removing elements. Call dtor.
for( int i = nNewMaxSize; i < nOldSize; ++i )
m_pData[i].~TYPE();
}
}
// Adjust buffer. Note that there's no need to check for error
// since if it happens, nOldSize == nNewMaxSize will be true.)
HRESULT hr = SetSizeInternal( nNewMaxSize );
if( nOldSize < nNewMaxSize )
{
assert( m_pData );
if( m_pData )
{
// Adding elements. Call ctor.
for( int i = nOldSize; i < nNewMaxSize; ++i )
::new ( &m_pData[i] ) TYPE;
}
}
return hr;
}
这可以在我的DXSDK版本(2010年6月)的第428行DXUTmisc.h中找到。我想知道::新的的东西....我试图谷歌和搜索堆栈溢出,但似乎搜索引擎丢弃两个冒号时,我在搜索栏....中输入"::new"
::new
调用意味着程序试图使用全局new
操作符来分配空间,而不是使用在类或命名空间作用域中定义的任何new
操作符。特别是,这段代码试图使用一种叫做放置new
的方法,在这种方法中,被创建的对象被放置在内存中的特定位置。通过显式地调用back到全局作用域,该函数确保正确地使用了placement new,并且不会意外地调用作用域链中某处引入的不同的分配函数。
希望这对你有帮助!
::new确保调用全局的new操作符,即标准的new操作符。注:new前表示全局作用域
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?