Оё метавонед фарқияти байни стек ва ёдгории heap-ро шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Ҳамвор ва тӯп — ин ду минтақаи гуногуни хотира мебошанд, ки дар C# барои нигоҳдории маълумот истифода мешаванд ва онҳо дар усули идоракунӣ ва мақсад фарқ мекунанд.
-
Ҳамвор (Stack) — ин минтақаи хотира аст, ки дар он тағйирёбандаҳои маҳаллӣ ва параметрҳои усулҳо нигоҳ дошта мешаванд. Он бо принсипи LIFO (охирин дар, аввал мебарояд) кор мекунад. Хотира дар ҳамвор автоматӣ дар вақти воридшавӣ ва баромад аз функсияҳо тақсим ва озод карда мешавад, ки хеле зуд аст. Дар ҳамвор арзишҳои намудҳои primitives ва ишораҳо ба объектҳо нигоҳ дошта мешаванд.
-
Тӯп (Heap) — ин минтақаи хотира барои тақсимоти динамикии объектҳо мебошад. Вақте ки объект бо
newэҷод мешавад, хотира дар тӯп тақсим карда мешавад. Идоракунии хотира дар тӯп тавассути Garbage Collector (мусобиқаи партовҳо) анҷом дода мешавад, ки объектҳои истифодашударо озод мекунад. Тӯп бештар чандир аст, аммо амалиётҳои тақсим ва озодкунӣ дар он нисбат ба ҳамвор сусттар мебошанд.
Масалан:
void Example()
{
int x = 10; // x дар ҳамвор нигоҳ дошта мешавад
MyClass obj = new MyClass(); // obj ишора дар ҳамвор, объект дар тӯп
}
Ин ҷо, x тағйирёбандаи маҳаллӣ дар ҳамвор аст, ва obj ишора дар ҳамвор аст, ки ба объект дар тӯп ишора мекунад.