共用方式為


new 運算子 (CRT)

從堆積中配置記憶體的區塊

void *__cdecl operator new(
   size_t count
);
void *__cdecl operator new(
   size_t count, 
   void * object
) throw();
void *__cdecl operator new(
   size_t count, 
   const std::nothrow_t&
) throw();

參數

  • 計數
    配置的大小。

  • object
    變數的指標,會建立物件的記憶體區塊。

傳回值

最低的新配置的儲存空間的位元組位址指標。

備註

這種形式的operator new就所謂的新的相對於向量新式的純量 (運算子 new [)。

此運算子的第一個表單就稱為 nonplacement 的表單。此運算子的第二個表單就所謂的位置形式,此運算子的第三個形式是 nonthrowing,位置形式。

運算子的第一種形式由編譯器所定義,而且不需要包含在您的程式中的 new.h。

運算子 delete 釋放記憶體,以配置operator new

您可以設定是否 new 運算子會傳回 null,或在失敗時擲回例外狀況。請參閱新增及刪除運算子如需詳細資訊。

擲回的例外情況或不擲回的行為,CRT operator new的行為就像運算子 new 標準的 C++ 程式庫。

需求

常式

所需的標頭

new

<new.h>

其他的相容性資訊,請參閱相容性在簡介中。

文件庫

所有版本的 C 執行階段程式庫

範例

下列示範如何使用純量,nonplacement 形式的operator new

// crt_new1.cpp
#include <stdio.h>
int main() {
   int * i = new int(6);
   printf("%d\n", *i);
   delete i;
}

下列示範如何使用的數量、 位置形式operator new

// crt_new2.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int(12);
   printf("*i = %d\n", *i);
   // initialize existing memory (i) with, in this case, int(7)
   int * j = new(i) int(7);   // placement new
   printf("*j = %d\n", *j);
   printf("*i = %d\n", *i);
   delete i;   // or, could have deleted j
}

下列示範如何使用純量、 位置、 否雙拋形式的operator new

// crt_new3.cpp
#include <stdio.h>
#include <new.h>
int main() {
   // allocates memory, initialize (8) and if call fails, new returns null
   int * k = new(std::nothrow) int(8);   // placement new
   printf("%d\n", *k);
   delete k;
}

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

記憶體配置