SORU
6 Temmuz 2009, PAZARTESİ


[0] new int -- bellek ayrılamadı C?

Basit bir test uygulaması:

cout << new int[0] << endl;

çıkışlar:

0x876c0b8

Çalışıyor gibi görünüyor. Standart bu konuda ne diyor? Her zaman "" boş bellek bloğu? tahsis etmek yasal mı

CEVAP
6 Temmuz 2009, PAZARTESİ


5.3.4/7

Direkt yeni Bildiricisi bir ifadenin değeri sıfır olduğunda, ayırma işlevi hiçbir öğe ile bir dizi ayırmaya denir.

3.7.3.1/2

Bir işaretçi kaldırma etkisi sıfır boyutunu isteği tanımsız olarak döndü.

Ayrıca

Eğer uzay talep boyutunu [yeni] sıfır değilse bile, isteği başarısız olabilir.

Demek sen de yapabilirsin, ama yasal olarak (iyi tanımlanmış bir şekilde genelinde tüm platformlar) başvuru belleği olsun - sadece geçmek için bir dizi silmek ve silmek.

Burada ayak-ilginç bir not (ben.e standart normatif bir parçası değil, ama açıklayıcı amaçlı dahil) 3.7.3.1/2 cümleye bağlı

[32. Kuralları büyük ölçüde aynıdır. niyet operatör yeni olması() çağıran tarafından uygulanabilir malloc() veya calloc(), C sıfır bir isteği olmayan boş bir işaretçi dönmek için gerektiren, C farklıdır.]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • snookie77

    snookie77

    2 Mart 2006
  • Tinkernut

    Tinkernut

    28 Aralık 2006