SORU
8 EKİM 2008, ÇARŞAMBA


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
8 EKİM 2008, ÇARŞAMBA


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • jesiel santos

    jesiel santo

    15 Ocak 2009