Հիմնական տարբերություն – Ստատիկ ընդդեմ դինամիկ հիշողության հատկացում
Ծրագրավորման մեջ անհրաժեշտ է պահպանել հաշվողական տվյալները։ Այս տվյալները պահվում են հիշողության մեջ: Համակարգչային ծրագրավորման մեջ տվյալների պահպանման հիշողության վայրերը հայտնի են որպես փոփոխականներ: Փոփոխականներն ունեն տվյալների հատուկ տեսակ: Հետևաբար հիշողությունը հատկացվում է ծրագրերը գործարկելու համար: Հիշողությունը կարող է տեղաբաշխվել երկու եղանակով. Դրանք են՝ ստատիկ հիշողության տեղաբաշխումը և դինամիկ հիշողության տեղաբաշխումը: Ստատիկ հիշողության տեղաբաշխման դեպքում հիշողությունը տեղաբաշխվելուց հետո այն չի կարող փոխվել: Հիշողությունը վերօգտագործելի չէ: Բայց դինամիկ հիշողության տեղաբաշխման դեպքում հիշողությունը տեղաբաշխվելուց հետո այն կարող է փոխվել:Ստատիկ և դինամիկ հիշողության բաշխման հիմնական տարբերությունն այն է, որ ստատիկ հիշողության տեղաբաշխման ժամանակ, երբ հիշողությունը հատկացվում է, հիշողության չափը ֆիքսվում է, մինչդեռ դինամիկ հիշողության տեղաբաշխման դեպքում, երբ հիշողությունը հատկացվում է, հիշողության չափը կարող է փոխվել:
Ի՞նչ է ստատիկ հիշողության հատկացումը:
Ստատիկ հիշողության տեղաբաշխման դեպքում հատկացված հիշողությունը ֆիքսված է: Հիշողությունը տեղաբաշխվելուց հետո այն չի կարող փոխվել: Հիշողությունը հնարավոր չէ ավելացնել կամ նվազեցնել: Օրինակ, C լեզվով, եթե ծրագրավորողը գրում է int x, ինչը նշանակում է, որ փոփոխականը կարող է պահել ամբողջ արժեք։ Բայթերի քանակը կախված է համակարգչից: Կարող են լինել նաև զանգվածներ։ օր. int x [5]; Այս x-ը զանգված է, որը կարող է պահել նույն տիպի տվյալների հաջորդականությունը: Այն կարող է պահել հինգ ամբողջ թվային տարր: Այն չի կարող պահել ավելի քան հինգ տարր: Java-ում զանգվածը կարող է ստեղծվել որպես, int arr=new int[5]; «arr» զանգվածը կարող է պահել 5 ամբողջ արժեք և չի կարող պահել դրանից ավելին։
Նկար 01. Հիշողության բաշխման մեթոդներ
Ստատիկ հիշողության տեղաբաշխման ժամանակ փոփոխականները տեղաբաշխվելուց հետո դրանք մնում են մշտական: Նախնական տեղաբաշխումից հետո ծրագրավորողը չի կարող փոխել հիշողության չափը: Եթե ծրագրավորողը հատկացրել է զանգված, որը կարող է պահել 10 տարր, հնարավոր չէ պահպանել նշված քանակից ավելի արժեքներ։ Եթե ծրագրավորողն ի սկզբանե հատկացրել է զանգված, որը կարող է պահել 10 տարր, բայց անհրաժեշտ է ընդամենը 5 տարր, ապա հիշողության վատնում կա: Այդ հիշողությունն այլևս պետք չէ, բայց նաև հնարավոր չէ նորից օգտագործել հիշողությունը։Ստատիկ հիշողության տեղաբաշխումը ֆիքսված է, բայց իրականացումը պարզ է և հեշտ, ինչպես նաև արագ:
Ի՞նչ է դինամիկ հիշողության հատկացումը:
Երբեմն անհրաժեշտ է լինում փոխել հիշողության չափը։ Այսպիսով, հիշողությունը կարող է տեղաբաշխվել դինամիկ կերպով: Կախված տվյալների տարրերի տեղադրումից և ջնջումից, հիշողությունը կարող է աճել կամ փոքրանալ: Այն հայտնի է որպես դինամիկ հիշողության տեղաբաշխում:
C լեզվում, stdlib.h վերնագրի ֆայլում, հիշողության դինամիկ տեղաբաշխման չորս գործառույթ կա: Դրանք են calloc, malloc, realloc և free: Malloc() ֆունկցիան հատկացնում է բայթերի պահանջվող չափը և վերադարձնում է դատարկ ցուցիչ՝ ցույց տալով հատկացված հիշողության առաջին բայթը։ Caloc() ֆունկցիան հատկացնում է բայթերի պահանջվող չափը և զրոյականացնում դրանք: Այնուհետև հիշողությանը վերադարձնում է դատարկ ցուցիչ: Free() ֆունկցիան օգտագործվում է հատկացված հիշողությունը վերաբաշխելու համար։ Իսկ realloc ֆունկցիան կարող է փոփոխել նախկինում հատկացված հիշողությունը: Caloc-ի կամ malloc-ի միջոցով հիշողություն հատկացնելուց հետո հիշողության չափը ֆիքսվում է, բայց դրանք կարող են մեծացվել կամ նվազեցնել՝ օգտագործելով realloc ֆունկցիան:Java-ում հավաքածուները կարող են օգտագործվել դինամիկ հիշողության բաշխման համար:
Դինամիկ հիշողության բաշխման հիմնական առավելությունն այն է, որ այն խնայում է հիշողությունը: Ծրագրավորողը կարող է տեղաբաշխել հիշողությունը կամ ազատել հիշողությունը ըստ անհրաժեշտության: Հիշողությունը կարող է վերաբաշխվել կատարման ընթացքում և կարող է ազատել հիշողությունը, երբ դա անհրաժեշտ չէ: Դինամիկ հիշողության տեղաբաշխումը նույնպես արդյունավետ է, քան ստատիկ հիշողության բաշխումը: Թերություններից մեկն այն է, որ դինամիկ հիշողության տեղաբաշխումը բարդ է:
Որո՞նք են նմանությունները ստատիկ և դինամիկ հիշողության բաշխման միջև:
- Երկուսն էլ հիշողության բաշխման մեխանիզմներ են։
- Երկուսն էլ պետք է իրականացվեն ծրագրավորողի կողմից ձեռքով:
Ո՞րն է տարբերությունը ստատիկ և դինամիկ հիշողության բաշխման միջև:
Ստատիկ ընդդեմ դինամիկ հիշողության բաշխում |
|
Ստատիկ հիշողության բաշխումը հիշողության բաշխման մեթոդ է, և հիշողությունը հատկացնելուց հետո այն ամրագրվում է: | Հիշողության դինամիկ տեղաբաշխումը հիշողության բաշխման մեթոդ է, և երբ հիշողությունը հատկացվի, այն կարող է փոխվել: |
Փոփոխություն | |
Ստատիկ հիշողության բաշխման դեպքում հնարավոր չէ չափափոխել սկզբնական տեղաբաշխումից հետո: | Հիշողության դինամիկ տեղաբաշխման դեպքում հիշողությունը կարելի է համապատասխանաբար նվազագույնի հասցնել կամ առավելագույնի հասցնել: |
Իրականացում | |
Ստատիկ հիշողության բաշխումը հեշտ է իրականացնել: | Դինամիկ հիշողության բաշխումը բարդ է իրականացնել: |
Արագություն | |
Ստատիկ հիշողության մեջ տեղաբաշխման կատարումն ավելի արագ է, քան դինամիկ հիշողության բաշխումը: | Դինամիկ հիշողության մեջ տեղաբաշխման կատարումն ավելի դանդաղ է, քան ստատիկ հիշողության բաշխումը: |
Հիշողության օգտագործում | |
Ստատիկ հիշողության տեղաբաշխման դեպքում չի կարող չօգտագործված հիշողությունը նորից օգտագործել: | Հիշողության դինամիկ տեղաբաշխումը թույլ է տալիս նորից օգտագործել հիշողությունը: Անհրաժեշտության դեպքում ծրագրավորողը կարող է ավելի շատ հիշողություն հատկացնել: Անհրաժեշտության դեպքում նա կարող է ազատել հիշողությունը։ |
Ամփոփում – Ստատիկ ընդդեմ դինամիկ հիշողության բաշխում
Ծրագրավորման մեջ ստատիկ հիշողության տեղաբաշխումը և դինամիկ հիշողության տեղաբաշխումը հիշողության բաշխման երկու մեխանիզմ են: Ստատիկ և դինամիկ հիշողության բաշխման միջև տարբերությունն այն է, որ ստատիկ հիշողության տեղաբաշխման ժամանակ, երբ հիշողությունը հատկացվում է, հիշողության չափը ամրագրվում է, մինչդեռ դինամիկ հիշողության բաշխման դեպքում, երբ հիշողությունը հատկացվում է, հիշողության չափը կարող է փոխվել: Ծրագրավորողը կարող է որոշել՝ հիշողությունը պետք է ստատիկ կամ դինամիկ լինի՝ կախված հավելվածից:
Ներբեռնեք Ստատիկ ընդդեմ դինամիկ հիշողության հատկացման PDF-ը
Դուք կարող եք ներբեռնել այս հոդվածի PDF տարբերակը և օգտագործել այն անցանց նպատակներով՝ ըստ մեջբերումների: Խնդրում ենք ներբեռնել PDF տարբերակը այստեղ. Տարբերությունը ստատիկ և դինամիկ հիշողության բաշխման միջև