Ne durumda malloc vs yeni kullanabilirim?
Görüyorum C orada birden fazla yol tahsis ve ücretsiz veri ve anlıyorum o zaman sana haber malloc
hayır free
ve kullandığınızda new
operatör olmalısınız çifti ile delete
ve bir hata için ikisini Karıştır (örneğin Arama free()
bir şey ile oluşturulmuş new
operatör), ama değilim net ne zaman almalıyım malloc
/ free
ve ne zaman almalıyım new
/ *Gerçek dünya benim programlarda 13* .
Eğer C Bir uzman iseniz, benim başparmak veya sözleşmelerin herhangi bir kural bildirin lütfen bu konuda takip edin.
CEVAP
C kullanmak zorunda değilsenizasla kullanma malloc. Her zaman yeni bir kullanım. Eğer ihtiyacınız varsa bir veri yığını gibi bir şey yapın:
char *pBuffer = new char[1024];
Bu doğru olmasa da, dikkatli olun
//This is incorrect - may delete only one element, may corrupt the heap, or worse...
delete pBuffer;
Bunun yerine veri dizisi silerken bunu yapmanız gerekir:
//This deletes all items in the array
delete[] pBuffer;
yeni anahtar kelimebunu yapmanın yolu, C, ve kendi tür var emin olacaktırkurucusu olarak da bilinir. Yeni anahtar kelime de daha fazlatürü güvenlimalloc typesafe değil oysa.
Yaptığım tek şey bunu kullanmak için yararlı olacağını düşünüyorummalloceğer ihtiyacınız olursasenin tampon boyutunu değiştirmekveri. Yeni anahtar kelime realloc gibi benzer bir yol yok. Realloc işlevi için bellek bir yığın boyutunu daha verimli bir şekilde uzatmak mümkün olabilir.
Mix yeni/özgür ve malloc/silemezsiniz olduğunu belirtmekte yarar var.
Unutmayın, bu soruya bazı cevaplar geçersizdir.
int* p_scalar = new int(5);//Does not create 5 elements, but initializes to 5
int* p_array = new int[5];//Creates 5 elements
Yeni/arasındaki fark/ücretsiz sil mall...
Ne zaman ve neden bir işletim sistemi ...
Yeni Malloc vs farklı dolgu...
İOS9 yeni uyarılar...
Nasıl çıktı bir yeni satır yapmak...