Ana içeriğe geç
Programlama

C ve C++ geliştirmede işaretçiler yerine indeks tanıtıcıları öne çıkıyor

Öne çıkanlar

  • Merkezi sistemler bellek ayrımını kendi içlerindeki dizilerde yönetti.
  • Dış dünyaya doğrudan işaretçi yerine dizi indeksini içeren tanıtıcılar verildi.
  • Tanıtıcı bitlerinin bir kısmı üretim sayacıyla kullanım sonrası serbest bırakma hatalarını engelliyor.

Geniş C ve C++ kod tabanlarında dinamik bellek yönetimini optimize etmek amacıyla ham ve akıllı işaretçiler yerine indeks tabanlı tanıtıcıların (handle) kullanımı açıklandı. Nesne yönelimli mimarilerde yaygın olan yığın tabanlı ayrıştırmaların işlemci önbellek ıskalamalarına ve sahte bellek sızıntılarına yol açtığı belirtildi. Veri odaklı tasarım yaklaşımında bellek yönetiminin merkezi sistemlere devredilmesi önerildi.

Sistemlerin aynı türdeki nesneleri merkezi dizilerde toplaması gerektiği aktarıldı. Bu yaklaşımda dış koda doğrudan işaretçi vermek yerine ilgili dizinin indeksini taşıyan tanıtıcılar döndürülüyor. Dizi taban işaretçisi sistem içinde gizli tutulduğu için dış kodun belleğe doğrudan erişimi engelleniyor. Dizi indeksinden artan bitler ise nesne yaşam döngüsünü takip eden sayaçlar ve güvenlik doğrulamaları için ayrılıyor.

Tanıtıcıların işaretçiye dönüştürülmesi gerektiğinde aralık ve aktiflik kontrolleri yapılıyor. Dizi yuvasındaki nesnenin silinip yerine yenisinin açılması durumunu yakalamak için yuva başına bir üretim sayacı kullanılıyor. Elde edilen işaretçilerin saklanmaması ve fonksiyon çağrıları boyunca taşınmaması kuralı sayesinde kullanım sonrası serbest bırakma (use-after-free) hatalarının önüne geçiliyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.