Mahalagang Pagkakaiba – calloc vs malloc
Sa programming, kailangang mag-imbak ng data. Ang data ay nakaimbak sa memorya. Ang mga lokasyon ng memorya na ito ay kilala bilang mga variable. Ang bawat variable ay may partikular na uri. Maaari silang maging integer, floats, doubles, character atbp. Mayroon ding mga istruktura ng data na maaaring mag-imbak ng fixed-size na sequential na koleksyon ng mga elemento ng parehong uri. Ito ay isang array. Kailangang ideklara ng programmer ang laki ng array. Kung ang programmer ay nagdedeklara ng isang hanay ng mga integer para sa limang elemento, hindi posibleng magtalaga ng halaga sa isang index na mas mataas kaysa sa ipinahayag na laki. Ang paglalaan ng memorya ay naayos, at hindi ito mababago sa oras ng pagtakbo. Ang iba pang paraan ng paglalaan ng memorya ay ang pabago-bagong paglalaan ng memorya. Ang dynamic na paglalaan ng memorya ay nakakatulong na maglaan ng mas maraming memory kapag kinakailangan at ilabas kung kinakailangan. Ang header file ay may apat na function para sa dynamic na memory allocation. Ang calloc at malloc ay dalawang ganoong pag-andar. Ang pangunahing pagkakaiba sa pagitan ng calloc at malloc ay ang calloc ay naglalaan ng memorya at nag-initialize din ng inilalaan na mga bloke ng memorya sa zero samantalang ang malloc ay naglalaan ng memorya ngunit hindi sinisimulan ang inilalaan na memorya sa zero. Ang pag-access sa nilalaman sa calloc ay magbibigay ng zero, ngunit ang malloc ay magbibigay ng isang halaga ng basura.
Ano ang calloc?
Ang paglalaan ng memorya ay ang proseso ng pagtatalaga ng memorya para sa mga nagpapatupad na programa. Minsan ito ay kinakailangan upang baguhin ang laki ng memorya. Samakatuwid, ginagamit ang dynamic na paglalaan ng memorya. Ginagawa ito gamit ang mga pointer. Ang mga pointer ay mga reference na variable na nagtataglay ng address ng isa pang variable.
Figure 01: calloc at malloc
Ang calloc ay nangangahulugang “magkadikit na alokasyon”. Naglalaan ito ng maraming bloke ng memorya na may parehong laki. Ang syntax para sa calloc ay ang mga sumusunod. Kailangan ng dalawang argumento. Ang mga ito ay ang bilang ng mga bloke at ang laki ng bawat bloke. Nagbabalik ang function calloc ng void pointer, kaya ginagamit ang cast operator para ibalik ang uri ng pointer ayon sa kinakailangang uri ng data.
voidcalloc(size_t num, size_t size);
Sumangguni sa ibaba ng simpleng C program.
isama ang
isama ang
int main(){
int ptr=(int) calloc(20, sizeof(int));
if (ptr==NULL){
printf(“Hindi nakalaan ang memorya”);
}
iba{
printf(“Ang memorya ay inilalaan”);
}
return 0;
}
Ayon sa programa sa itaas, isang magkadikit na bloke ng memorya na maaaring maglaman ng 20 elemento ay inilalaan. Ang bawat isa ay magkakaroon ng laki ng isang integer. Ginagamit ang sizeof(int) dahil ang uri ng integer ay nag-iiba mula sa compiler hanggang sa compiler.
Kung matagumpay ang paglalaan ng memorya, ibabalik nito ang base address ng memory block. Nangangahulugan ito na ang pointer ptr ay tumuturo na ngayon sa base address ng memory block na iyon. Ang lahat ng inilalaang rehiyon ay sinisimulan sa mga zero. Ipi-print nito ang Memory Allocated na mensahe. Kung hindi matagumpay ang paglalaan ng memorya, ibabalik nito ang null pointer. Samakatuwid, ito ay magpi-print Memory ay hindi inilalaan na mensahe.
Ano ang malloc?
Ang malloc function ay ginagamit upang ilaan ang kinakailangang dami ng mga byte sa memorya. Ang syntax para sa malloc ay ang mga sumusunod. Ang laki ay kumakatawan sa kinakailangang memorya sa mga byte.
void malloc(size_t_size);
Nagbabalik ang function na malloc ng void pointer, kaya ginagamit ang cast operator para ibalik ang uri ng pointer ayon sa kinakailangang uri ng data.
Sumangguni sa ibaba ng simpleng C program na may malloc function.
isama ang
isama ang
int main(){
int ptr=(int) malloc (10sizeof(int));
if (ptr==NULL){
printf(“Hindi nakalaan ang memorya”);
}
iba{
printf(“Ang memorya ay inilalaan”);
}
return 0;
}
Ayon sa programa sa itaas, ilalaan ang block ng memorya. Ang pointer ay tumuturo sa panimulang address ng inilalaan na memorya. Ang ibinalik na pointer ay na-convert sa isang uri ng integer. Kung ang memorya ay inilalaan ito ay magpi-print ng memorya ay inilalaan na mensahe. Kung hindi nakalaan ang memorya, babalik ang isang null pointer. Samakatuwid, hindi nakalaan ang memorya, ipi-print ang mensahe.
Ano ang Pagkakatulad sa pagitan ng calloc at malloc?
- Ang parehong mga function na ito ay idineklara sa header file. Ito ang karaniwang file ng header ng library.
- Ginagamit ang parehong function para sa dynamic na paglalaan ng memory.
- Ang pointer na ibinalik ng calloc at malloc ay dapat i-cast sa partikular na uri.
- Sa matagumpay na paglalaan ng memorya, ang parehong mga function ay magbabalik ng pointer na may base address ng memory block.
- Kung hindi matagumpay ang paglalaan ng memorya, ibabalik ang isang null pointer.
Ano ang Pagkakaiba sa pagitan ng calloc at malloc?
calloc vs malloc |
|
Ang calloc ay isang function para sa dynamic na paglalaan ng memory sa C language stdlib.h header file na naglalaan ng partikular na bilang ng mga byte at nagpapasimula sa mga ito sa zero. | Ang malloc ay isang function para sa dynamic na memory allocation sa C language stdlib.h header file na naglalaan ng partikular na bilang ng mga byte. |
Kahulugan | |
Ang calloc ay nangangahulugang magkadikit na alokasyon. | Ang malloc ay nangangahulugang paglalaan ng memorya. |
Syntax | |
Sinusundan ng calloc ang isang syntax na katulad ng void calloc(size_t_num, size_t size); | Sinusundan ng malloc ang isang syntax na katulad ng void malloc(size_t_size);. |
Bilang ng Mga Argumento | |
Ang calloc ay tumatagal ng dalawang argumento. Ang mga ito ay isang bilang ng mga bloke at laki ng bawat bloke. | Ang malloc ay tumatagal ng isang argumento. Ito ay isang bilang ng mga byte. |
Bilis | |
Ang calloc ay mas matagal kaysa sa malloc. Iyon ay dahil sa karagdagang hakbang ng pagsisimula ng inilalaan na memorya ng zero. | Ang malloc ay mas mabilis kaysa sa calloc. |
Buod – calloc vs malloc
Sa static na paglalaan ng memorya tulad ng paggamit namin ng mga array, ang memorya ay naayos. Kung ilang elemento ang nakaimbak, ang natitirang memorya ay nasasayang. Maaari rin itong magdulot ng mga error kapag ang inilaan na memorya ay maliit kaysa sa kinakailangang memorya. Samakatuwid, ginagamit ang dynamic na paglalaan ng memorya. Sa wikang C, ang calloc at malloc ay nagbibigay ng dynamic na paglalaan ng memorya. Ang pagkakaiba sa pagitan ng calloc at malloc ay ang calloc ay naglalaan ng memorya at nag-initialize din ng inilalaan na mga bloke ng memorya sa zero habang ang malloc ay naglalaan ng memorya ngunit hindi nag-initialize ng mga bloke ng memorya sa zero. Si Malloc ay tumatagal ng dalawang argumento habang ang calloc ay tumatagal ng dalawang argumento.
I-download ang PDF ng calloc vs malloc
Maaari mong i-download ang PDF na bersyon ng artikulong ito at gamitin ito para sa offline na layunin ayon sa tala ng pagsipi. Paki-download ang bersyon ng PDF dito: Pagkakaiba sa pagitan ng calloc at malloc