Sobes.tech
Junior

Obyektlər yaddaşda harada saxlanılır?

sobes.tech Süni İntellekt

AI-dan cavab

Yaddaşdakı obyektlər müxtəlif sahələrdə saxlanılır, onların növü, həyat müddəti və seçilmiş proqramlaşdırma dili/icra mühiti əsasında. Əsas sahələr:

  • Heap (Yığın): Kompilyator tərəfindən tərtib mərhələsində müəyyən edilməyən obyektlər üçün dinamik ayrılmış yaddaş. Yığın yaddaşının idarə olunması avtomatik idarəetmə (avtomatik yığımçı ilə) və ya əl ilə həyata keçirilir.
  • Stack (Yığım): Primitiv növ (tam ədədlər, boolean dəyərlər), yığın obyektlərinə istinadlar, yerli dəyişənlər və funksiyaların çağırış məlumatları üçün istifadə olunur. Yığımda yaddaş avtomatik olaraq blok daxilində və çıxışında ayrılır və azad edilir.
  • Statik sahə (Statik/Ümumi məlumat seqmenti): Statik və qlobal dəyişənləri saxlayır. Bu dəyişənlərin həyat müddəti proqramın həyat müddəti ilə üst-üstə düşür.

Obyekt yönümlü dillərdə, obyektə istinad yığımda (və ya başqa bir obyektin sahəsi olarsa yığında) saxlanılır, və obyekt və onun məlumatları yığında yerləşir.

Java nümunəsi:

class MyObject {
    int value; // Obyektdə sahə
}

public class Main {
    public static void main(String[] args) {
        int primitiveVar = 10; // primitiveVar yığında saxlanılır
        MyObject objRef = new MyObject(); // objRef (istinad) yığında, new MyObject() (məlumatlar) yığında deyil, obyekt heap-də saxlanılır
        objRef.value = 20; // Obyektdəki məlumatlara giriş
    }
}

C++ nümunəsi:

#include <iostream>

class MyObject {
public:
    int value;
};

int globalVar = 5; // globalVar statik sahədə saxlanılır

int main() {
    int localVar = 10; // localVar yığında saxlanılır
    MyObject stackObj; // stackObj (obyekt) yığında saxlanılır
    stackObj.value = 15;

    MyObject* heapObj = new MyObject(); // heapObj (işarəçi) yığında saxlanılır, new MyObject() (obyekt) heap-də saxlanılır
    heapObj->value = 20;

    delete heapObj; // Heap-dəki yaddaşın əl ilə azad edilməsi
    return 0;
}

Müqayisə cədvəli:

Yaddaş sahəsi Məqsəd Həyat müddəti Yaddaş idarəetməsi
Yığım (Stack) Primitiv növlər, istinadlar, yerli dəyişənlər Kod bloku/funksiyası Avtomatik
Yığın (Heap) Obyektlər, dinamik məlumat strukturları Açıqlananadək/çöp toplayıcı Avtomatik (çöp toplayıcı) və ya əl ilə
Statik sahə Statik və qlobal dəyişənlər Proqramın həyat müddəti Avtomatik