Негизги айырма – Статикалык жана динамикалык эстутумду бөлүштүрүү
Программалоодо эсептөө маалыматтарын сактоо зарыл. Бул маалыматтар эстутумда сакталат. Компьютердик программалоодо маалыматтарды сактоо үчүн эстутум орундары өзгөрмөлөр деп аталат. Өзгөрмөлөр белгилүү бир маалымат түрүнө ээ. Ошондуктан, эстутум программаларды иштетүү үчүн бөлүнгөн. Эстутум эки жол менен бөлүштүрүлүшү мүмкүн. Алар статикалык эс бөлүштүрүү жана динамикалык эс бөлүштүрүү. Статикалык эстутум бөлүштүрүүдө, эстутум бөлүнгөндөн кийин аны өзгөртүү мүмкүн эмес. Эстутум кайра колдонууга болбойт. Бирок динамикалык эстутумду бөлүштүрүүдө, эстутум бөлүнгөндөн кийин аны өзгөртүүгө болот. Статикалык жана динамикалык эстутумду бөлүштүрүүнүн негизги айырмачылыгы, эстутумдун статикалык бөлүштүрүүдө эстутум бөлүнгөндөн кийин, эстутумдун көлөмү динамикалык эстутум бөлүштүрүүдө белгиленет, эстутум бөлүнгөндөн кийин, эстутумдун өлчөмүн өзгөртүүгө болот.
Статикалык эстутумду бөлүштүрүү деген эмне?
Статикалык эстутумду бөлүштүрүүдө бөлүнгөн эстутум бекитилет. Эстутум бөлүнгөндөн кийин, аны өзгөртүү мүмкүн эмес. Эстутумду көбөйтүү же азайтуу мүмкүн эмес. Мисалы, C тилинде, эгерде программист int x жазса, бул өзгөрмө бүтүн санды сактай алат дегенди билдирет. Байттардын саны компьютерге жараша болот. Массивдер да болушу мүмкүн. мис. int x [5]; Бул x бир типтеги маалыматтардын ырааттуулугун сактай турган массив. Ал беш бүтүн элементтерди сактай алат. Ал беш элементтен ашык сактай албайт. Java тилинде массив, int arr=new int[5] катары түзүлүшү мүмкүн; "arr" массиви 5 бүтүн маанини сактай алат жана андан ашык сактай албайт.
01-сүрөт: Эстутумду бөлүштүрүү ыкмалары
Статикалык эстутумду бөлүштүрүүдө, өзгөрмөлөр бөлүнгөндөн кийин, алар туруктуу бойдон калат. Алгачкы бөлүштүрүүдөн кийин программист эстутумдун өлчөмүн өзгөртө албайт. Эгерде программист 10 элементти сактай ала турган массивди бөлсө, анда көрсөтүлгөн суммадан ашык маанилерди сактоо мүмкүн эмес. Эгерде программист алгач 10 элементти кармай турган массивди бөлүп берсе, бирок 5 гана элемент керек болсо, анда эстутум ысырап болот. Ал эстутум мындан ары керек эмес, бирок эстутумду кайра колдонуу да мүмкүн эмес. Статикалык эстутумду бөлүштүрүү такталган, бирок ишке ашыруу жөнөкөй жана оңой, ошондой эле тез.
Динамикалык эстутумду бөлүштүрүү деген эмне?
Кээде эстутумдун өлчөмүн өзгөртүү керек болот. Ошентип, эс динамикалык бөлүштүрүлүшү мүмкүн. Маалымат элементтерин киргизүүгө жана жок кылууга жараша эстутум чоңоюшу же кичирейиши мүмкүн. Ал динамикалык эстутумду бөлүштүрүү катары белгилүү.
С тилинде, stdlib.h баш файлында, динамикалык эстутумду бөлүштүрүү үчүн төрт функция бар. Алар calloc, malloc, realloc жана акысыз. malloc() функциясы байттардын керектүү өлчөмүн бөлүп берет жана бөлүнгөн эстутумдун биринчи байтын көрсөткөн бош көрсөткүчтү кайтарат. calloc() функциясы байттардын керектүү өлчөмүн бөлүп берет жана аларды нөлгө чейин инициализациялайт. Андан кийин эстутумга боштук көрсөткүчүн кайтарат. free() функциясы бөлүнгөн эстутумду кайра бөлүштүрүү үчүн колдонулат. Жана realloc функциясы мурда бөлүнгөн эстутумду өзгөртө алат. Calloc же malloc аркылуу эстутумду бөлүштүргөндөн кийин, эстутумдун өлчөмү бекитилет, бирок аларды realloc функциясынын жардамы менен көбөйтүүгө же азайтууга болот. Java'да коллекцияларды динамикалык эстутумду бөлүштүрүү үчүн колдонсо болот.
Динамикалык эстутумду бөлүштүрүүнүн негизги артыкчылыгы - эстутумду үнөмдөйт. Программист эстутумду бөлүштүрө алат же керек болсо эстутумду бошотот. Эстутум аткаруу учурунда кайра бөлүштүрүлүшү мүмкүн жана ал талап кылынбаган учурда эстутумду бошото алат. Динамикалык эстутумду бөлүштүрүү статикалык эстутумду бөлүштүрүүгө караганда натыйжалуу. Бир кемчилиги - динамикалык эстутумду бөлүштүрүү татаал.
Статикалык жана динамикалык эстутумду бөлүштүрүүнүн кандай окшоштуктары бар?
- Экөө тең эстутумду бөлүштүрүү механизмдери.
- Экөөнү тең программист кол менен ишке ашырышы керек.
Статикалык жана динамикалык эстутумду бөлүштүрүүнүн ортосунда кандай айырма бар?
Статикалык жана динамикалык эстутумду бөлүштүрүү |
|
Статикалык эстутумду бөлүштүрүү - эстутумду бөлүштүрүү ыкмасы жана эстутум бөлүнгөндөн кийин, ал оңдолот. | Динамикалык эстутумду бөлүштүрүү - эстутумду бөлүштүрүү ыкмасы жана эстутум бөлүнгөндөн кийин, аны өзгөртүүгө болот. |
Өзгөртүү | |
Статикалык эстутум бөлүштүрүүдө, баштапкы бөлүштүрүүдөн кийин өлчөмүн өзгөртүү мүмкүн эмес. | Динамикалык эстутумду бөлүштүрүүдө эстутумду кичирейтсе же ошого жараша көбөйтүүгө болот. |
Ишке ашыруу | |
Статикалык эстутумду бөлүштүрүү оңой. | Динамикалык эстутумду бөлүштүрүү татаал. |
Ылдамдык | |
Статикалык эстутумда бөлүштүрүү аткарылышы динамикалык эстутумду бөлүштүрүүгө караганда ылдамыраак. | Динамикалык эстутумда бөлүштүрүү аткарылышы статикалык эстутумду бөлүштүрүүгө караганда жайыраак. |
Эстуумдун колдонулушу | |
Статикалык эстутумду бөлүштүрүүдө пайдаланылбаган эстутумду кайра колдонууга болбойт. | Динамикалык эстутумду бөлүштүрүү эстутумду кайра колдонууга мүмкүндүк берет. Керек болгондо программист көбүрөөк эстутумду бөлө алат. Керек болгондо эстутумду бошото алат. |
Корытынды – Статикалык жана динамикалык эстутумду бөлүштүрүү
Программалоодо статикалык эстутум бөлүштүрүү жана динамикалык эстутум бөлүштүрүү эстутумду бөлүштүрүүнүн эки механизми болуп саналат. Статикалык жана динамикалык эстутумду бөлүштүрүүнүн ортосундагы айырма, эстутумдун статикалык бөлүштүрүүдө эстутум бөлүнгөндөн кийин, эстутумдун көлөмү динамикалык эстутум бөлүштүрүүдө, эстутум бөлүнгөндөн кийин, эстутумдун өлчөмүн өзгөртүүгө болот. Программист колдонмого жараша эс тутум статикалык же динамикалык болушу керектигин чече алат.
Статикалык жана динамикалык эстутумду бөлүштүрүүнүн PDF форматын жүктөп алыңыз
Сиз бул макаланын PDF версиясын жүктөп алып, шилтеме эскертүүсүнө ылайык оффлайн максаттарында колдоно аласыз. Сураныч, PDF версиясын бул жерден жүктөп алыңыз: Статикалык жана динамикалык эстутумду бөлүштүрүүнүн ортосундагы айырма