new işleci (CRT)

Bellek bloğu öbekten ayırır.

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();

Parametreler

  • Sayımı
    Ayırma boyutu.

  • Nesne
    Bir nesne oluşturulur bellek bloğu için bir işaretçi.

Dönüş Değeri

En düşük bayt adresini yeni ayrılan depolama için bir işaretçi.

Notlar

Bu formu, operator new skalar yeni aksine vektör yeni form olarak bilinir (Yeni operator [).

Bu işleç ilk biçimini nonplacement form olarak bilinir.Bu işleç ikinci form yerleştirme formu olarak bilinen ve bu operatörün üçüncü form nonthrowing, yerleştirme formu.

İşletmenin ilk form derleyici tarafından tanımlanır ve programınızda dahil edilecek new.h gerektirmez.

delete operatörü ile ayrılan belleği serbest bırakır operator new.

Yeni işleç null döndürüyor veya arıza bir istisna atar yapılandırabilirsiniz.Bkz: Yeni ve işleçler silmek daha fazla bilgi için.

Atma dışında ya da Hayır atma davranışı, crt operator new gibi davranan Yeni işleç Standart C++ Kitaplığı'nda.

Gereksinimler

Yordamı

Gerekli başlık

new

<new.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Kitaplıkları

Tüm sürümleri c çalışma zamanı kitaplıkları.

Örnek

Skalar, nonplacement şeklinde nasıl aşağıdaki gösterir operator new.

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

Aşağıdaki ölçekli yerleşim biçiminin kullanılması gösterilmiştir 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
}

Aşağıdaki skalar, yerleşimi, no-throw formu nasıl kullanılacağını gösteren 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 Eşdeğeri

Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.

Ayrıca bkz.

Başvuru

Bellek Ayırma