SORU
2 HAZİRAN 2009, Salı


Güvenli geçersiz bir işaretçi silmek için mi?

Ben aşağıdaki kodu var varsayalım:

void* my_alloc (size_t size)
{
   return new char [size];
}

void my_free (void* ptr)
{
   delete [] ptr;
}

Bu güvenli mi? Veya ptr 3 ** silme işleminden önce atama olmalı?

CEVAP
2 HAZİRAN 2009, Salı


Void bir işaretçi aracılığıyla silme C Standardı tarafından tanımsız - bölüm 5.3.5/3:

İlk alternatif (sil statik yazarsanız nesne), işlenen dinamik farklıdır yazın, statik tip bir üs olacaktır işlenen dinamik türü sınıf ve statik bir tür olacaktır sanal yıkıcı ya da davranıştır tanımsız. İkinci alternatif (silme dizisi) dinamik yazarsanız silinecek nesne farklıdır statik türü, davranıştır tanımsız.

Ve Dipnot:

Bu bir nesne olamaz anlamına gelir void bir işaretçi kullanarak silinmiş* tür nesneleri yok çünkü geçersiz

.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dumb Stupid Videos

    Dumb Stupid

    26 Kasım 2013
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009