Mahalagang Pagkakaiba – Static vs Dynamic na Paglalaan ng Memory
Sa programming, kinakailangang mag-imbak ng computational data. Ang mga data na ito ay naka-imbak sa memorya. Ang mga lokasyon ng memorya para sa pag-iimbak ng data sa computer programming ay kilala bilang mga variable. Ang mga variable ay may partikular na uri ng data. Samakatuwid, ang memorya ay inilalaan upang patakbuhin ang mga programa. Maaaring ilaan ang memorya sa dalawang paraan. Ang mga ito ay Static memory allocation at Dynamic na memory allocation. Sa static na paglalaan ng memorya, kapag ang memorya ay inilalaan ay hindi na ito mababago. Ang memorya ay hindi magagamit muli. Ngunit sa pabago-bagong paglalaan ng memorya, kapag ang memorya ay inilalaan maaari itong mabago. Ang pangunahing pagkakaiba sa pagitan ng static at dynamic na paglalaan ng memorya ay na sa static na paglalaan ng memorya kapag ang memorya ay inilalaan, ang laki ng memorya ay naayos habang sa dynamic na paglalaan ng memorya, kapag ang memorya ay inilalaan, ang laki ng memorya ay maaaring baguhin.
Ano ang Static Memory Allocation?
Sa static na paglalaan ng memorya, ang nakalaan na memorya ay naayos. Kapag ang memorya ay inilalaan, hindi na ito mababago. Ang memorya ay hindi maaaring dagdagan o bawasan. Halimbawa, sa wikang C kung ang programmer ay nagsusulat ng int x, na nangangahulugan na ang variable ay maaaring mag-imbak ng isang integer na halaga. Ang bilang ng mga byte ay depende sa computer. Maaari ding magkaroon ng mga arrays. Hal. int x [5]; Ang x na ito ay isang array na maaaring mag-imbak ng sequence ng data na pareho ang uri. Maaari itong mag-imbak ng limang elemento ng integer. Hindi ito maaaring mag-imbak ng higit sa limang elemento. Sa Java, maaaring gumawa ng array bilang, int arr=new int[5]; Ang array na 'arr' ay maaaring mag-imbak ng 5 integer na halaga at hindi maaaring mag-imbak ng higit pa doon.
Figure 01: Mga Paraan ng Paglalaan ng Memory
Sa static na memory allocation, kapag ang mga variable ay inilalaan, ang mga ito ay mananatiling permanente. Pagkatapos ng paunang alokasyon, hindi maaaring baguhin ng programmer ang memorya. Kung ang programmer ay naglaan ng array na maaaring mag-imbak ng 10 elemento, hindi posibleng mag-imbak ng mga halaga nang higit sa tinukoy na halaga. Kung ang programmer sa una ay naglaan ng isang array na maaaring maglaman ng 10 elemento, ngunit kailangan lamang ng 5 elemento, pagkatapos ay mayroong isang pag-aaksaya ng memorya. Ang memorya na iyon ay hindi na kailangan, ngunit hindi rin posible na muling gamitin ang memorya. Naayos ang static na memory allocation ngunit simple at madali ang pagpapatupad, at mabilis din ito.
Ano ang Dynamic Memory Allocation?
Minsan kailangang baguhin ang laki ng memorya. Kaya't ang memorya ay maaaring ilaan nang pabago-bago. Depende sa mga pagpapasok at pagtanggal ng mga elemento ng data, maaaring lumaki o lumiit ang memorya. Kilala ito bilang dynamic na memory allocation.
Sa C language, stdlib.h header file, mayroong apat na function para sa dynamic na memory allocation. Ang mga ito ay calloc, malloc, realloc at libre. Ang function na malloc() ay naglalaan ng kinakailangang laki ng mga byte at nagbabalik ng void pointer, na itinuturo ang unang byte ng inilaan na memorya. Ang function na calloc() ay naglalaan ng kinakailangang laki ng mga byte at sinisimulan ang mga ito sa zero. Pagkatapos ay nagbabalik ng void pointer sa memorya. Ang free() function ay ginagamit upang muling italaga ang inilalaan na memorya. At maaaring baguhin ng realloc function ang dating inilaan na memorya. Pagkatapos maglaan ng memorya gamit ang calloc o malloc, ang laki ng memorya ay naayos, ngunit maaari silang dagdagan o bawasan gamit ang realloc function. Sa Java, maaaring gamitin ang mga koleksyon para sa dynamic na paglalaan ng memorya.
Ang pangunahing bentahe ng dynamic na paglalaan ng memorya ay nakakatipid ito ng memorya. Ang programmer ay maaaring maglaan ng memorya o ilabas ang memorya kung kinakailangan. Ang memorya ay maaaring muling italaga sa panahon ng pagpapatupad at maaaring palayain ang memorya kapag hindi ito kinakailangan. Ang dynamic na memory allocation ay mahusay din kaysa sa static na memory allocation. Ang isang kawalan ay ang pagpapatupad ng dynamic na memory allocation ay kumplikado.
Ano ang Pagkakatulad sa pagitan ng Static at Dynamic na Memory Allocation?
- Parehong mga mekanismo ng paglalaan ng memorya.
- Ang dalawa ay dapat na ipatupad nang manu-mano ng programmer.
Ano ang Pagkakaiba sa pagitan ng Static at Dynamic na Memory Allocation?
Static vs Dynamic Memory Allocation |
|
Ang static na paglalaan ng memorya ay isang paraan ng paglalaan ng memorya, at kapag ang memorya ay inilaan, ito ay naayos na. | Ang dynamic na paglalaan ng memorya ay isang paraan ng paglalaan ng memorya, at kapag nailaan na ang memorya, maaari itong baguhin. |
Pagbabago | |
Sa static na memory allocation, hindi posibleng baguhin ang laki pagkatapos ng paunang alokasyon. | Sa dynamic na memory allocation, ang memorya ay maaaring i-minimize o i-maximize nang naaayon. |
Pagpapatupad | |
Madaling ipatupad ang static memory allocation. | Ang dynamic na memory allocation ay kumplikadong ipatupad. |
Bilis | |
Sa static na memorya, ang pagpapatupad ng alokasyon ay mas mabilis kaysa sa dynamic na paglalaan ng memorya. | Sa dynamic na memory, ang pagpapatupad ng alokasyon ay mas mabagal kaysa sa static na paglalaan ng memorya. |
Paggamit ng Memory | |
Sa static na memory allocation, hindi magagamit muli ang hindi nagamit na memory. | Dynamic na paglalaan ng memorya ay nagbibigay-daan sa muling paggamit ng memorya. Ang programmer ay maaaring maglaan ng mas maraming memorya kapag kinakailangan. Maaari niyang ilabas ang alaala kung kinakailangan. |
Buod – Static vs Dynamic Memory Allocation
Sa programming, ang Static memory allocation at dynamic na memory allocation ay dalawang mekanismo para sa paglalaan ng memory. Ang pagkakaiba sa pagitan ng static at dynamic na paglalaan ng memorya ay na sa static na paglalaan ng memorya kapag ang memorya ay inilalaan, ang laki ng memorya ay naayos habang sa dynamic na paglalaan ng memorya, kapag ang memorya ay inilalaan, ang laki ng memorya ay maaaring baguhin. Ang programmer ay maaaring magpasya kung ang memorya ay dapat na static o dynamic depende sa application.
I-download ang PDF ng Static vs Dynamic Memory Allocation
Maaari mong i-download ang PDF na bersyon ng artikulong ito at gamitin ito para sa mga offline na layunin ayon sa tala ng pagsipi. Paki-download ang bersyon ng PDF dito: Pagkakaiba sa pagitan ng Static at Dynamic na Memory Allocation