27 EKİM 2008, PAZARTESİ
Yeni/arasındaki fark/ücretsiz sil malloc nedir?
*/delete
*1 ve malloc
/free
arasındaki fark nedir?
(Yinelenen?) ile ilgili: In what cases do I use malloc vs new?
CEVAP
27 EKİM 2008, PAZARTESİ
yeni/sil
- /Serbest bellek ayrılamadı
- Bellekten ayrılan Serbest Store'
- Döner tam olarak yazılı bir işaretçi.
- (standart sürüm) yeni hiç döndürür NULL (başarısızlık üzerine atar)
- Tip-ID (derleyici boyutunu hesaplar) denir
- Bir sürüm açıkça diziler işlemek için vardır.
- Yeniden (daha fazla yer almak için) sezgisel olarak ele değil (kopya kurucu dolayı).
- Malloc getirdikleri/ücretsiz uygulama tanımlı.
- Yeni bir bellek ayırıcısı düşük bellek ile başa çıkmak için Ekle (set_new_handler)
- operatör yeni/sil yasal olarak geçersiz kılınabilir
- kurucu//nesneyi başlatmak yok etmek için kullanılan yıkıcı
malloc/ücretsiz
- Ayırır/serbest bellek
- Bellekten ayrılan '' . Öbek
- Bir void* döndürür
- Hatası NULL döndürüyor
- Belirtmek boyutunu bayt cinsinden gerekli.
- Ayrılırken dizi uzay manuel hesaplama gerektirir.
- Hafıza basit büyük kısmını (endişelenecek Hiçbir kopya kurucu) yeniden tahsis etme
- Onlar olacakDEĞİLyeni/sil arayın
- Düşük bellek ile yardımcı olmak için tahsis sıra kullanıcı kodu ekleme yolu yok.
- serbest/mallocDEĞİLyasal olarak geçersiz kılınabilir
Tablo özellikleri yönünden karşılaştırılması
Feature | new/delete | malloc/free
-------------------------- -------------------------------- -------------------------------
Memory allocated from | 'Free Store' | 'Heap'
Returns | Fully typed pointer | void*
On failure | Throws (never returns NULL) | Returns NULL
Required size | Calculated by compiler | Must be specified in bytes
Handling arrays | Has an explicit version | Requires manual calculations
Reallocating | Not handled intuitively | Simple (no copy constructor)
Call of reverse | Implementation defined | No
Low memory cases | Can add a new memory allocator | Not handled by user code
Overridable | Yes | No
Use of (con-)/destructor | Yes | No
Teknik olarak yeni bir bellek tarafından tahsis edilen gelir Serbest belleğe malloc ile ayrılmış ise'''. Öbek Bu iki alanda olup aynı uygulamasıdır malloc ve yeni karışık olamaz, bu yüzden detayları.
Bunu Paylaş:
Eski stil ve yeni stil Python sınıflar...
Bir rota ve Yeni bir Yönlendirici API ...
javascript yeni Hata ve at(nesne)atmak...
&Quot;text" ve yeni bir Dize(&quo...
Bir URI, URL ve URN arasındaki fark ne...