मॉलोक (), कॉलोक (), फ्री () और smautai_paunaAavaMTna () का उपयोग करके सी में डायनेमिक मेमोरी आवंटन

सी भाषा में गतिशील मेमोरी आवंटन की अवधारणा सी प्रोग्रामर को रनटाइम पर मेमोरी आवंटित करने में सक्षम बनाती है। C भाषा में डायनेमिक मेमोरी आवंटन Stdlib.h हैडर फ़ाइल के 4 कार्यों द्वारा संभव है।

smautai_AavaMTna_1 () smautai_AavaMTna () smautai_paunaAavaMTna () मुक्त() ऊपर कार्यों को सीखने से पहले, आइए स्थिर मेमोरी आवंटन और गतिशील मेमोरी आवंटन के बीच अंतर को समझें।

स्थैतिक स्मृति आवंटन गतिशील स्मृति आवंटन मेमोरी संकलन समय पर आवंटित की जाती है। मेमोरी को रन टाइम पर आवंटित किया जाता है। कार्यक्रम निष्पादित करते समय मेमोरी को नहीं बढ़ाया जा सकता है। कार्यक्रम निष्पादित करते समय मेमोरी को बढ़ाया जा सकता है। सरणी में इस्तेमाल किया। लिंक की गई सूची में उपयोग किया जाता है।

अब आइए गतिशील मेमोरी आवंटन के लिए उपयोग किए जाने वाले तरीकों पर एक त्वरित नज़र डालें।

Malloc () अनुरोधित मेमोरी का एकल ब्लॉक आवंटित करता है। Calloc () अनुरोधित मेमोरी के कई ब्लॉक आवंटित करता है। Realloc () Malloc () या Calloc () फ़ंक्शंस द्वारा कब्जा की गई मेमोरी को वास्तविकता देता है। नि: शुल्क () गतिशील रूप से आवंटित मेमोरी को मुक्त करता है।

मॉलोक () फंक्शन में सी

Malloc () फ़ंक्शन अनुरोधित मेमोरी का एकल ब्लॉक आवंटित करता है। यह निष्पादन समय पर मेमोरी को इनिशियलाइज़ नहीं करता है, इसलिए यह शुरू में कचरा मूल्य है। यदि मेमोरी पर्याप्त नहीं है तो यह शून्य लौटता है। Malloc () फ़ंक्शन का सिंटैक्स नीचे दिया गया है:

paiTiAar=(Walanaa-pzakar*)smautai_AavaMTna_1(baaET-Aakar)

आइए देखें Malloc () फ़ंक्शन का उदाहरण देखें।

उदाहरण

#EZstamaalakre<PsaTidiAayaAae.Pca>
#EZstamaalakre<PsaTidi_saMgazh.Pca>
paunaZ mauqya(){
paunaZ Pna,maIM,*paiTiAar,jaaed.=0;
laiqaiyae("pzavaeSa krnaa saMqyaa ka tatvaaeM: ");
laijaiyae("%paunaZ",&Pna);
paiTiAar=(paunaZ*)smautai_AavaMTna_1(Pna*Aakar(paunaZ)); //yaaD AabaMTita kaRUpayaaegaRkrtaeRhuP smautai_AavaMTna_1
Agar(paiTiAar==vyaYaZ)
{
laiqaiyae("xamaa maaMganaa! AsamaYaZ kae AavaMTita yaaD");
baMDkre(0);
}
laiqaiyae("pzavaeSa krnaa tatvaaeM ka sarnai: ");
jaba(maIM=0;maIM<Pna;++maIM)
{
laijaiyae("%paunaZ",paiTiAar+maIM);
jaaed.+=*(paiTiAar+maIM);
}
laiqaiyae("jaaed.=%paunaZ",jaaed.);
mauKtakre(paiTiAar);
vaapasakre 0;
}

आउटपुट

pzavaeSaRkrnaa tatvaaeM ka sarnai: 3
pzavaeSaRkrnaa tatvaaeM ka sarnai: 10
10
10
jaaed.=30

C में Calloc () फ़ंक्शन

Calloc () फ़ंक्शन अनुरोधित मेमोरी के कई ब्लॉक आवंटित करता है। यह शुरू में सभी बाइट्स को शून्य से शुरू करता है। यदि मेमोरी पर्याप्त नहीं है तो यह शून्य लौटता है। Calloc () फ़ंक्शन का सिंटैक्स नीचे दिया गया है:

paiTiAar=(Walanaa-pzakar*)smautai_AavaMTna(saMqyaa, baaET-Aakar)

आइए कॉलोक () फ़ंक्शन का उदाहरण देखें।

उदाहरण

#EZstamaalakre<PsaTidiAayaAae.Pca>
#EZstamaalakre<PsaTidi_saMgazh.Pca>
paunaZ mauqya(){
paunaZ Pna,maIM,*paiTiAar,jaaed.=0;
laiqaiyae("pzavaeSa krnaa saMqyaa ka tatvaaeM: ");
laijaiyae("%paunaZ",&Pna);
paiTiAar=(paunaZ*)smautai_AavaMTna(Pna,Aakar(paunaZ)); //yaaD AabaMTita kaRUpayaaegaRkrtaeRhuP smautai_AavaMTna
Agar(paiTiAar==vyaYaZ)
{
laiqaiyae("xamaa maaMganaa! AsamaYaZ kae AavaMTita yaaD");
baMDkre(0);
}
laiqaiyae("pzavaeSa krnaa tatvaaeM ka sarnai: ");
jaba(maIM=0;maIM<Pna;++maIM)
{
laijaiyae("%paunaZ",paiTiAar+maIM);
jaaed.+=*(paiTiAar+maIM);
}
laiqaiyae("jaaed.=%paunaZ",jaaed.);
mauKtakre(paiTiAar);
vaapasakre 0;
}

आउटपुट

pzavaeSaRkrnaa tatvaaeM ka sarnai: 3
pzavaeSaRkrnaa tatvaaeM ka sarnai: 10
10
10
jaaed.=30

R में smautai_paunaAavaMTna () फ़ंक्शन

यदि मेमोरी मॉलोक () या कॉलोक () के लिए पर्याप्त नहीं है, तो आप Realloc () फ़ंक्शन द्वारा मेमोरी को रियललेट कर सकते हैं। संक्षेप में, यह मेमोरी आकार को बदलता है। आइए देखें Realloc () फ़ंक्शन का सिंटैक्स देखें।

paiTiAar=smautai_paunaAavaMTna(paiTiAar, nayaa-Aakar)

नि: शुल्क () c में फ़ंक्शन

Malloc () या Calloc () फ़ंक्शंस द्वारा कब्जा की गई मेमोरी को फ़्री () फ़ंक्शन पर कॉल करके जारी किया जाना चाहिए। अन्यथा, यह कार्यक्रम से बाहर निकलने तक मेमोरी का उपभोग करेगा। आइए देखें मुक्त () फ़ंक्शन का सिंटैक्स देखें।

mauKtakre(paiTiAar)

◀ पीछे अगला ▶