Junior
Bellekte yığın nasıl kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Yığın, yerel değişkenleri, fonksiyon parametrelerini ve dönüş adreslerini depolamak için kullanılır. Bellek, LIFO (Last-In, First-Out) ilkesiyle otomatik olarak tahsis edilir ve serbest bırakılır.
Heap (Yığın), derleme zamanında bilinmeyen veya oluşturuldukları kapsamı aşan nesneler için dinamik bellek tahsisi yapmak üzere kullanılır. Heap'teki bellek yönetimi manuel veya bellek yönetim mekanizmaları (Swift'te ARC, diğer dillerde çöp toplayıcı) ile gerçekleştirilir.
| Özellik | Yığın | Yığın (Heap) |
|---|---|---|
| Tahsis | Otomatik | Dinamik (manuel veya MRC/ARC ile) |
| Serbest bırakma | Kapsamdan çıkarken otomatik | Manuel (free) veya MRC/ARC ile |
| Veri boyutu | Derleme sırasında bilinen | Çalıştırma zamanına kadar bilinmeyebilir |
| Erişim | Hızlı, sıralı | Daha yavaş, rastgele |
| Yapı | LIFO | Nesne grafiği |
| Örnekler | Yerel değişkenler, fonksiyon parametreleri | Sınıf nesneleri, değişken boyutlu yapılar |
// Swift'te yığın ve heap kullanımı örneği
func myFunction() {
// Yığında yerel değişken
var stackVariable: Int = 10
// Heap'te sınıf nesnesi
let heapObject = MyClass()
// Değer tipi yığında (referans tipi içermeyen yapılar hariç)
var stackStruct = MyStruct()
// Referans tipi içeren yapı, bir kısmı heap'te olabilir
var mixedStruct = MyMixedStruct()
}
class MyClass {
// Nesne özellikleri heap'te saklanır
var property: String = "Hello"
}
struct MyStruct {
// Değer tipi özellikleri yığında saklanır
var property: Int = 20
}
class MyReferenceType {
var value: Int = 30
}
struct MyMixedStruct {
// Yığında değer tipi
var stackProperty: Int = 40
// Heap'te referans tipi (kendi referansı yığında)
var heapReference: MyReferenceType = MyReferenceType()
}