सी मधील डायनॅमिक मेमरी ation लोकेशन एमएएलओसी (), कॉलॉक (), फ्री () आणि रीलॉक () वापरून
सी भाषेत डायनॅमिक मेमरी वाटपाची संकल्पना सी प्रोग्रामरला रनटाइमवर मेमरीचे वाटप करण्यास सक्षम करते. सी भाषेत डायनॅमिक मेमरी वाटप एसटीडीएलआयबी.एच हेडर फाइलच्या 4 फंक्शन्सद्वारे शक्य आहे.
मालोक () Calloc () रील्लोक () विनामूल्य () वरील फंक्शन्स शिकण्यापूर्वी, स्टॅटिक मेमरी वाटप आणि डायनॅमिक मेमरी वाटपामधील फरक समजूया.
स्थिर मेमरी वाटप डायनॅमिक मेमरी वाटप कंपाईल वेळी मेमरी वाटप केली जाते. रन वेळी मेमरी वाटप केली जाते. प्रोग्राम कार्यान्वित करताना मेमरी वाढविली जाऊ शकत नाही. प्रोग्राम कार्यान्वित करताना मेमरी वाढविली जाऊ शकते. अॅरे मध्ये वापरलेले. दुवा साधलेल्या यादीमध्ये वापरलेले.
आता डायनॅमिक मेमरी ation लोकेशनसाठी वापरल्या जाणार्या पद्धतींकडे एक द्रुत नजर टाकूया.
मॅलोक () विनंती केलेल्या मेमरीचा एकल ब्लॉक वाटप करतो. कॉलॉक () विनंती केलेल्या मेमरीच्या एकाधिक ब्लॉकचे वाटप करते. रील्लॉक () मॅलोक () किंवा कॉलॉक () फंक्शन्सद्वारे व्यापलेल्या मेमरीचे पुनर्विचार करते. विनामूल्य () गतिशीलपणे वाटप केलेली मेमरी मुक्त करते.
सी मध्ये मॅलोक () फंक्शन
मॅलोक () फंक्शन विनंती केलेल्या मेमरीच्या एकल ब्लॉकचे वाटप करते. हे अंमलबजावणीच्या वेळी मेमरीला प्रारंभ करत नाही, म्हणून सुरुवातीला कचरा मूल्य आहे. मेमरी पुरेसे नसल्यास हे शून्य मिळवते. मॅलोक () फंक्शनचे वाक्यरचना खाली दिले आहे:
paiTiAar=(kasT-pzakar*)smautai_AavaMTna_1(baaET-Aakar)
चला मलोक () फंक्शनचे उदाहरण पाहूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
#vaapara<PsaTidi_saMgazh.Pca>
paunaZ mauqya(){
paunaZ Pna,mai,*paiTiAar,baerija=0;
laiha("pzavaiST kra kzmaaMk cyaa oaTk: ");
vacaa("%paunaZ",&Pna);
paiTiAar=(paunaZ*)smautai_AavaMTna_1(Pna*Aakar(paunaZ)); //maemari vaaTpaRkelae vaaparta smautai_AavaMTna_1
jar(paiTiAar==Saunya)
{
laiha("xamasva! Axama Tu vaaTpa maemari");
baMDkra(0);
}
laiha("pzavaiST kra oaTk cyaa AWre: ");
jaeMvh(mai=0;mai<Pna;++mai)
{
vacaa("%paunaZ",paiTiAar+mai);
baerija+=*(paiTiAar+mai);
}
laiha("baerija=%paunaZ",baerija);
mauKtakra(paiTiAar);
vaapasakra 0;
}
आउटपुट
pzavaiSTRkra oaTk cyaa AWre: 3
pzavaiSTRkra oaTk cyaa AWre: 10
10
10
baerija=30
सी मध्ये कॉलॉक () फंक्शन
कॉलॉक () फंक्शन विनंती केलेल्या मेमरीच्या एकाधिक ब्लॉकचे वाटप करते. हे सुरुवातीला सर्व बाइट्स शून्यावर प्रारंभ करते. मेमरी पुरेसे नसल्यास हे शून्य मिळवते. कॉलॉक () फंक्शनचा वाक्यरचना खाली दिली आहे:
paiTiAar=(kasT-pzakar*)smautai_AavaMTna(kzmaaMk, baaET-Aakar)
चला कॉलॉक () फंक्शनचे उदाहरण पाहूया.
उदाहरण
#vaapara<PsaTidiAayaAae.Pca>
#vaapara<PsaTidi_saMgazh.Pca>
paunaZ mauqya(){
paunaZ Pna,mai,*paiTiAar,baerija=0;
laiha("pzavaiST kra kzmaaMk cyaa oaTk: ");
vacaa("%paunaZ",&Pna);
paiTiAar=(paunaZ*)smautai_AavaMTna(Pna,Aakar(paunaZ)); //maemari vaaTpaRkelae vaaparta smautai_AavaMTna
jar(paiTiAar==Saunya)
{
laiha("xamasva! Axama Tu vaaTpa maemari");
baMDkra(0);
}
laiha("pzavaiST kra oaTk cyaa AWre: ");
jaeMvh(mai=0;mai<Pna;++mai)
{
vacaa("%paunaZ",paiTiAar+mai);
baerija+=*(paiTiAar+mai);
}
laiha("baerija=%paunaZ",baerija);
mauKtakra(paiTiAar);
vaapasakra 0;
}
आउटपुट
pzavaiSTRkra oaTk cyaa AWre: 3
pzavaiSTRkra oaTk cyaa AWre: 10
10
10
baerija=30
smautai_paunaAavaMTna () सी मध्ये कार्य
जर मेमालोक () किंवा कॉलॉक () साठी मेमरी पुरेसे नसेल तर आपण रील्लोक () फंक्शनद्वारे मेमरी पुन्हा तयार करू शकता. थोडक्यात, ते मेमरी आकार बदलते. चला Realloc () फंक्शनचा वाक्यरचना पाहूया.
paiTiAar=smautai_paunaAavaMTna(paiTiAar, navaina-Aakar)
सी मध्ये विनामूल्य () कार्य
मॉलोक () किंवा कॉलॉक () फंक्शन्सद्वारे व्यापलेली मेमरी फ्री () फंक्शनवर कॉल करून सोडली जाणे आवश्यक आहे. अन्यथा, प्रोग्रामच्या बाहेर जाईपर्यंत ते मेमरीचे सेवन करेल. चला विनामूल्य () फंक्शनचे वाक्यरचना पाहूया.
mauKtakra(paiTiAar)