Sobes.tech
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