Soru Çözümü: C++ Vektör Reallocation ve Dangling Reference Riski
💡 Çözümü Gör (Tıkla - Öğren)
✅ Doğru Cevap: C) Vektör yeniden tahsis (reallocation) yaptığı için ref geçersiz (dangling reference) hale gelir; tanımsız davranış (Undefined Behavior) oluşur.
Detaylı Açıklama:
v.reserve(2);satırıyla vektör için bellekte yalnızca 2 elemanlık yer ayrılmıştır.v.push_back(10);eklendikten sonraint& ref = v[0];ile 10 değerinin bellekteki adresine bir referans bağlanır.- Daha sonra
v.push_back(20);ve ardındanv.push_back(30);çağrılır. 3. eleman eklendiğinde ayrılan 2 elemanlık kapasite aşılır. - Kapasite aşıldığında vektör belleğin başka bir yerinde daha büyük yeni bir alan tahsis eder, eski elemanları oraya taşır ve eski bellek alanını yok eder (reallocation).
- Bu taşınma sonucunda
refreferansı artık yok edilmiş eski bellek adresini göstermeye devam eder (Dangling Reference). - Sonraki satırda
refokunmaya çalışıldığında serbest bırakılmış belleğe erişildiği için Tanımsız Davranış (Undefined Behavior) meydana gelir.

0 Yorumlar