சி புரோகிராமிங்கில் மெமரி லீக் என்றால் என்ன

Ci Purokiraminkil Memari Lik Enral Enna



புரோகிராமிங்கின் அடிப்படைகளில் நினைவக மேலாண்மை அடங்கும், குறிப்பாக சி போன்ற மொழிகளில் உள்ளடங்கிய குப்பை சேகரிப்பான் இல்லாமல். நினைவகம் கசிகிறது இது போன்ற மொழிகளில் ஒரு பொதுவான பிரச்சனை, மேலும் அவை நினைவக பற்றாக்குறையால் நிரல் செயலிழக்கும் வரை நிரல் மேலும் மேலும் நினைவகத்தை நுகரும். ஒரு மென்பொருள் தேவையில்லாத நினைவகத்தை வெளியிடத் தவறினால், நினைவகம் ஒதுக்கப்பட்டு பயன்படுத்தப்படாமல் உள்ளது. நினைவக கசிவு .

நினைவக கசிவு எப்போது ஏற்படும்?

மென்பொருள் நினைவகத்தை ஒதுக்கிய பிறகு, அதன் மூலம் அதை வெளியிடாத பிறகு, ஒரு உள்ளது நினைவக கசிவு . பழைய நினைவகத்தை ஒதுக்கி பயன்படுத்தாமல் விட்டுவிட்டு, புதிய மாறிகளுக்கு நிரல் தொடர்ந்து அதிக நினைவகத்தை ஒதுக்குகிறது என்பதே இதன் பொருள். இதன் விளைவாக நிரல் மேலும் மேலும் நினைவகத்தைப் பயன்படுத்துகிறது, மேலும் இறுதியில், நினைவகத்தில் இல்லாத பிழை காரணமாக நிரல் செயலிழக்கிறது.

C இல் நினைவக கசிவின் விளைவுகள்

நினைவகம் கசிகிறது ஒரு திட்டத்தில் நிறைய சிக்கல்களை ஏற்படுத்தலாம். சரிபார்க்காமல் விட்டுவிட்டால், ஏ நினைவக கசிவு நிரலை செயலிழக்கச் செய்யலாம் அல்லது இயங்குவதை நிறுத்தலாம், இது தரவு இழப்பு அல்லது ஊழலுக்கு வழிவகுக்கும். மேலும், நிரல் தேவையானதை விட அதிக நினைவகத்தை உட்கொள்வதால், இது கணினி செயல்திறனை பாதிக்கலாம் மற்றும் அதே கணினியில் இயங்கும் மற்ற நிரல்களின் வேகத்தை குறைக்கலாம்.







சி மொழியில் நினைவக ஒதுக்கீடு

நினைவக ஒதுக்கீடு பயன்படுத்தி செய்யப்படுகிறது malloc() சி மொழியில் செயல்பாடு. இந்த முறை குறிப்பிட்ட அளவுடன் நினைவக தொகுதிக்கான குறிப்பை மீண்டும் வழங்குகிறது. ஒதுக்கப்பட்ட நினைவக தொகுதியை அணுக சுட்டிக்காட்டி மதிப்பு பயன்படுத்தப்படுகிறது. நினைவகம் தேவைப்படாவிட்டால், அதைப் பயன்படுத்தி அதை விடுவிக்க வேண்டும் இலவச() செயல்பாடு.



நினைவக கசிவுக்கான காரணங்கள்

அதற்கான சில காரணங்கள் நினைவகம் கசிகிறது அவை:



1: முறையற்ற நினைவக மேலாண்மை

நினைவக கசிவுகளுக்கு அடிக்கடி காரணம் புரோகிராமரின் மோசமான நினைவக மேலாண்மை ஆகும். தேவையில்லாத நினைவகத்தை வெளியிட ஒரு நிரல் புறக்கணிக்கும்போது இது நிகழ்கிறது.





#உள்படுத்து
# அடங்கும்

முழு எண்ணாக முக்கிய ( )
{
முழு எண்ணாக * ptr = ( முழு எண்ணாக * ) malloc ( அளவு ( முழு எண்ணாக ) ) ;
* ptr = 10 ;
printf ( '%d \n ' , * ptr ) ;
ptr = ஏதுமில்லை ;
திரும்ப 0 ;
}

மேலே உள்ள குறியீட்டில், பயன்படுத்தி malloc() உள்ள முறை ptr சுட்டிக்காட்டி, ஒரு முழு எண் நினைவக தொகுதிக்கு இடத்தை ஒதுக்கினோம். தி ptr நாம் அமைக்கும் போது சுட்டியின் மதிப்பு மாறுகிறது ஏதுமில்லை அதற்கு, இன்னும் அது முன்பு குறிப்பிட்ட நினைவக தொகுதி வெளியிடப்படவில்லை. எனவே, ஏ நினைவக கசிவு விளைவிக்கும்.

வெளியீடு



2: ஸ்கோப் பாயிண்டர் இல்லை

ஒரு சுட்டி மாறி இருக்கும் போது அதன் நோக்கம், a நினைவக கசிவு சி நிரல்களில் நிகழ்கிறது.

#உள்படுத்து
# அடங்கும்

முழு எண்ணாக முக்கிய ( )
{
முழு எண்ணாக எண்1 = 32 , எண்2 = 23 ;
{
முழு எண்ணாக * தொகை = ( முழு எண்ணாக * ) malloc ( அளவு ( முழு எண்ணாக ) ) ;
* தொகை = எண்1 + எண்2 ;
printf ( '%d \n ' , * தொகை ) ;
}
printf ( '%d \n ' , * தொகை ) ;
திரும்ப 0 ;
}

மேலே உள்ள சி நிரலில், தி முக்கிய() செயல்பாடு ஒரு முழு நினைவக தொகுதியை ஒதுக்க உள்ளூர் நோக்கத்தைப் பயன்படுத்துகிறது தொகை சுட்டி மாறி. நாங்கள் பயன்படுத்தியதால் தொகை புதிதாக உருவாக்கப்பட்ட மெமரி பிளாக்கிற்கு a மற்றும் b ஐ சேர்ப்பதற்கான சுட்டிக்காட்டி, தொகுதி நோக்கம் முடிந்த பிறகும் நினைவக தொகுதி தொடர்ந்து ஒதுக்கப்படும். எனவே, ஏ நினைவக கசிவு ஏற்படும்.

வெளியீடு

C இல் நினைவக கசிவுகளைக் கண்டறிதல்

கண்டறிதல் மற்றும் தடுப்பு நினைவகம் கசிகிறது நிரல் நிலைத்தன்மை மற்றும் செயல்திறனைப் பராமரிப்பதில் முக்கியமானவை. கண்டுபிடிக்க நினைவகம் கசிகிறது , புரோகிராமர்கள் போன்ற கருவிகளைப் பயன்படுத்தலாம் தேர்தல் வாயில் , நினைவக பிழைத்திருத்தம் மற்றும் விவரக்குறிப்பு கருவி. தேர்தல் வாயில் ஒரு நிரலில் உள்ள அனைத்து நினைவக அணுகல்களையும் கண்காணிப்பதன் மூலம் நினைவக கசிவைக் கண்டறிய உதவுகிறது மற்றும் ஒதுக்கப்பட்ட நினைவகம் எப்போது வெளியிடப்படவில்லை என்பதைக் கண்டறிய உதவுகிறது.

C இல் நினைவக கசிவைத் தடுக்கும்

தடுக்க நினைவகம் கசிகிறது , கீழே கொடுக்கப்பட்டுள்ள வழிமுறைகளைப் பின்பற்றவும்.

1: எப்போதும் ஒதுக்கப்பட்ட நினைவகத்தை வெளியிடவும்
நினைவகம் எப்பொழுதும் வெளிப்படையாக வெளியிடப்பட வேண்டும் இலவச() இது போன்ற செயல்பாட்டைப் பயன்படுத்தி மாறும் வகையில் ஒதுக்கப்பட்ட பிறகு முறை malloc(), calloc(), அல்லது realloc() . இதைச் செய்வதன் மூலம், நினைவகம் கணினிக்குத் திரும்பியது மற்றும் பிற பயன்பாடுகளுக்குக் கிடைக்கிறது என்பது உறுதி செய்யப்படுகிறது.

2: ஒதுக்கப்பட்ட நினைவகத்தை கண்காணித்தல்
ஒதுக்கப்பட்ட நினைவகத்தை கண்காணிப்பது முக்கியம், அது தேவையில்லாதபோது அது வெளியிடப்படுவதை உறுதிசெய்யும். ஒதுக்கப்பட்ட ஒவ்வொரு நினைவகத்தையும் கண்காணிப்பதன் மூலமும், தேவையில்லாதபோது அதை வெளியிடுவதன் மூலமும் இதை அடையலாம்.

3: சுட்டிகளைக் கண்காணிக்கவும்
நினைவக ஒதுக்கீடு மற்றும் இட ஒதுக்கீட்டை தானாக நிர்வகிக்க சுட்டிகள் கண்காணிக்கப்பட வேண்டும், நினைவக கசிவை தடுக்கிறது.

4: நிலையான பகுப்பாய்வு கருவிகளைப் பயன்படுத்தவும்
உருவாக்க நேரத்தில், நிலையான பகுப்பாய்வு கருவிகள் சாத்தியத்தை அடையாளம் காண முடியும் நினைவகம் கசிகிறது க்ளாங் மற்றும் ஜிசிசி போன்ற சி நிரல்களில். பயன்பாடு இயங்கும் முன், இந்த கருவிகள் சாத்தியமான நினைவக கசிவுகளைக் கண்டறிவதற்கும் திருத்த பரிந்துரைகளை செய்வதற்கும் உதவும்.

பின்வரும் உதாரணம் மேலே உள்ள செயல்முறையை விளக்குகிறது.

#உள்படுத்து
# அடங்கும்
#உள்படுத்து

முழு எண்ணாக முக்கிய ( )
{
முழு எண்ணாக * ptr = ( முழு எண்ணாக * ) malloc ( அளவு ( முழு எண்ணாக ) ) ;
என்றால் ( ptr == ஏதுமில்லை ) {
printf ( 'நினைவக ஒதுக்கீடு பிழை. \n ' ) ;
திரும்ப 1 ;
}
* ptr = 10 ;
printf ( '%d \n ' , * ptr ) ;
இலவசம் ( ptr ) ;
திரும்ப 0 ;
}

இந்த மேலே உள்ள குறியீடு முதலில் நினைவக ஒதுக்கீடு வெற்றிகரமாக இருந்ததா என்பதைச் சரிபார்ப்பதன் மூலம் தீர்மானிக்கிறது ptr குறிப்பு இல்லை ஏதுமில்லை . ஒதுக்கீடு தோல்வியுற்றால் குறியீடு பிழையை சரியான முறையில் கையாளலாம். ஒதுக்கீடு வெற்றிகரமாக இருந்தால், குறியீடு நினைவகத் தொகுதிக்கு மதிப்பைக் கொடுக்கிறது 10 மற்றும் அதை வெளியிடுகிறது. அதன் பிறகு, குறியீடு பயன்படுத்துவதன் மூலம் ஒதுக்கப்பட்ட நினைவகத்தை வெளியிடுகிறது இலவச() செயல்பாடு.

வெளியீடு

முடிவுரை

நினைவகம் கசிகிறது செயல்திறன் சிதைவு மற்றும் செயலிழப்புகள் உட்பட திட்டங்களில் குறிப்பிடத்தக்க சிக்கல்களை ஏற்படுத்தும். கவனமான நினைவக மேலாண்மை, முறையான சோதனை மற்றும் நினைவக பயன்பாட்டைக் கண்காணித்தல் ஆகியவற்றின் மூலம் இத்தகைய சிக்கல்களைக் கண்டறிந்து தடுக்கலாம். எனவே, புரோகிராமர்கள் நினைவக கசிவுக்கான சாத்தியக்கூறுகளை அறிந்திருக்க வேண்டும் மற்றும் அவற்றைத் தடுக்க தேவையான நடவடிக்கைகளை எடுக்க வேண்டும்.