Junior
Nesneler bellekte nerede saklanır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bellek içindeki nesneler, türlerine, yaşam sürelerine ve seçilen programlama dili/çalışma ortamına bağlı olarak farklı alanlarda saklanır. Ana alanlar:
- Heap (Yığın): Derleme aşamasında derleyici tarafından belirlenmeyen nesneler için dinamik olarak ayrılan bellek. Heap'teki bellek yönetimi, otomatik yönetim (çöp toplayıcı) veya manuel yönetim (otomatik olmayan dillerde) ile yapılır.
- Stack (Yığın): Primitif veri tipleri (tam sayılar, boolean değerler), heap'teki nesnelere referanslar, yerel değişkenler ve fonksiyon çağrı bilgileri için kullanılır. Yığın üzerindeki bellek, kod bloğu/fonksiyon giriş ve çıkışında otomatik olarak tahsis edilir ve serbest bırakılır.
- Statik alan (Static/Global Veri Segmenti): Statik ve küresel değişkenleri tutar. Bu değişkenlerin yaşam süresi, programın yaşam süresiyle aynıdır.
Nesne yönelimli dillerde, nesneye referans yığında (veya başka bir nesnenin alanıysa yığında) saklanır, nesne ve verileri ise yığında bulunur.
Java örneği:
class MyObject {
int value; // Nesne alanı
}
public class Main {
public static void main(String[] args) {
int primitiveVar = 10; // primitiveVar yığında saklanır
MyObject objRef = new MyObject(); // objRef (referans) yığında, new MyObject() (veriler) yığında değil, nesne heap'te
objRef.value = 20; // Nesne verilerine erişim
}
}
C++ örneği:
#include <iostream>
class MyObject {
public:
int value;
};
int globalVar = 5; // globalVar statik alanda saklanır
int main() {
int localVar = 10; // localVar yığında
MyObject stackObj; // stackObj (nesne) yığında
stackObj.value = 15;
MyObject* heapObj = new MyObject(); // heapObj (işaretçi) yığında, new MyObject() (nesne) heap'te
heapObj->value = 20;
delete heapObj; // Heap'teki belleği manuel serbest bırakma
return 0;
}
Karşılaştırma tablosu:
| Bellek Alanı | Amaç | Yaşam Süresi | Bellek Yönetimi |
|---|---|---|---|
| Yığın (Stack) | Primitif tipler, referanslar, yerel değişkenler | Kod bloğu/fonksiyon | Otomatik |
| Heap (Yığın) | Nesneler, dinamik veri yapıları | Açıkça serbest bırakılana kadar/çöp toplayıcı | Otomatik (çöp toplayıcı) veya manuel |
| Statik Alan | Statik ve küresel değişkenler | Programın çalışma süresi | Otomatik |