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.