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 |