operator new[] (<new>)

新的表达式称为的指派功能分配数组的存储对象。

void *operator new[]( 
   std::size_t _Count 
) 
   throw(std::bad_alloc); 
void *operator new[]( 
   std::size_t _Count, 
   const std::nothrow_t& 
) throw( ); 
void *operator new[]( 
   std::size_t _Count,  
   void* _Ptr 
) throw( );

参数

  • _Count
    为数组中将对象分配的存储区。

  • _Ptr
    所返回的指针。

返回值

指向新分配内存的最小字节地址的指针。 或 _Ptr.

备注

第一个函数由 new[] 表达式分配存储空间调用正确对齐的 _Count 字节表示跨越所有数组对象或更小。 程序可定义具有替换标准 C++ 库定义的默认版本的此函数签名的函数。 需的行为与 new 运算符(size_t)。 默认行为是返回 operator new(_Count)。

第二个函数。将 new[] 表达式分配存储空间调用正确对齐的 _Count 字节表示跨越所有对象数组。 程序可定义具有替换标准 C++ 库定义的默认版本的此函数签名的函数。 默认行为是 运算符返回new(_Count),如果该函数已经成功。 否则,它返回空指针。

第三个函数中,new[] 表达式由窗体调用 new (args)] [ TN。 此处,args 包括单个对象指针。 函数返回 _Ptr。

为 **operator new[]**分配的未使用助记域,调用 delete operator[]

有关引发的 nonthrowing 的行为或新信息,请参见 新运算符和删除

示例

// new_op_alloc.cpp
// compile with: /EHsc
#include <new>
#include <iostream>

using namespace std;

class MyClass {
public:
   MyClass() {
      cout << "Construction MyClass." << this << endl;
   };

   ~MyClass() {
      imember = 0; cout << "Destructing MyClass." << this << endl;
      };
   int imember;
};

int main() {
   // The first form of new delete
   MyClass* fPtr = new MyClass[2];
   delete[ ] fPtr;

   // The second form of new delete
   char x[2 * sizeof( MyClass ) + sizeof(int)];
   
   MyClass* fPtr2 = new( &x[0] ) MyClass[2];
   fPtr2[1].~MyClass();
   fPtr2[0].~MyClass();
   cout << "The address of x[0] is : " << ( void* )&x[0] << endl;

   // The third form of new delete
   MyClass* fPtr3 = new( nothrow ) MyClass[2];
   delete[ ] fPtr3;
}

示例输出

Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC
Construction MyClass.0012FED4
Construction MyClass.0012FED8
Destructing MyClass.0012FED8
Destructing MyClass.0012FED4
The address of x[0] is : 0012FED0
Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC

要求

新 <的页眉: >

命名空间: std

请参见

参考

nothrow_t 结构

operator delete[] (<new>)