Unreachable code
கணினி நிரலாக்கத்தில், அணுக முடியாத குறியீடு என்பது ஒரு நிரலின் மூலக் குறியீட்டின் ஒரு பகுதியாகும், இது ஒருபோதும் செயல்படுத்தப்பட முடியாது, ஏனெனில் நிரலின் மற்ற பகுதிகளிலிருந்து குறியீட்டிற்கு கட்டுப்பாட்டு ஓட்டப் பாதை இல்லை. அணுக முடியாத குறியீடு சில நேரங்களில் டெட் கோட் என்றும் அழைக்கப்படுகிறது, இருப்பினும் டெட் கோட் செயல்படுத்தப்படும் குறியீட்டைக் குறிக்கலாம், ஆனால் ஒரு நிரலின் வெளியீட்டில் எந்த விளைவையும் ஏற்படுத்தாது. அணுக முடியாத குறியீடு பொதுவாக பல காரணங்களுக்காக விரும்பத்தகாததாகக் கருதப்படுகிறதுஃ இது தேவையில்லாமல் நினைவகத்தைப் பயன்படுத்துகிறது இது CPU இன் அறிவுறுத்தல் தற்காலிக சேமிப்பை தேவையற்ற முறையில் பயன்படுத்தக்கூடும் இது தரவு இருப்பிடத்தையும் குறைக்கலாம் நேரம் மற்றும் முயற்சி செலவு செய்யப்படலாம் சோதனை, பராமரித்தல் மற்றும் ஆவணப்படுத்துதல் குறியீடு ஒருபோதும் பயன்படுத்தப்படுவதில்லை சில நேரங்களில் ஒரு தானியங்கி சோதனை மட்டுமே குறியீட்டைப் பயன்படுத்துகிறது. இருப்பினும், அணுக முடியாத குறியீடு ஒரு பிரேக் பாயிண்டிற்குப் பிறகு நிரல் நிறுத்தப்படும்போது பிழைத்திருத்தம் வழியாக கைமுறையாக அழைக்க அல்லது குதிப்பதற்கான செயல்பாடுகளின் நூலகத்தை வழங்குவது போன்ற சில நியாயமான பயன்பாடுகளைக் கொண்டிருக்கலாம். திட்டத்தின் உள் நிலையை ஆராய்வதற்கும் அழகாக அச்சிடுவதற்கும் இது குறிப்பாக பயனுள்ளதாக இருக்கும். அனுப்பப்பட்ட தயாரிப்பில் அத்தகைய குறியீட்டை வைத்திருப்பது அர்த்தமுள்ளதாக இருக்கலாம், இதனால் ஒரு டெவலப்பர் ஒரு வாடிக்கையாளரின் இயங்கும் நிகழ்வுடன் ஒரு பிழைத்திருத்தத்தை இணைக்க முடியும். அணுக முடியாத குறியீடு பல காரணங்களுக்காக இருக்கலாம், அதாவதுஃ சிக்கலான நிபந்தனை கிளைகளில் நிரலாக்க பிழைகள் ஒரு உகந்த தொகுப்பாளரால் நிகழ்த்தப்பட்ட உள் மாற்றங்களின் விளைவாகும்; புதிய அல்லது மாற்றியமைக்கப்பட்ட குறியீடு லெகஸி குறியீட்டின் முழுமையற்ற சோதனை மற்றொரு செயல்படுத்தல் அணுக முடியாத குறியீட்டால் மாற்றப்பட்டது, இது ஒரு புரோகிராமர் நீக்க வேண்டாம் என்று முடிவு செய்தார், ஏனெனில் இது அடையக்கூடிய குறியீட்டுடன் கலக்கப்பட்டுள்ளது தற்போதைய பயன்பாட்டு நிகழ்வுகளுக்கு ஒருபோதும் செயலற்ற குறியீடு தேவையில்லை, இது பின்னர் தேவைப்பட்டால் வேண்டுமென்றே வைக்கப்படும் குறியீடு பிழைத்திருத்தத்திற்கு மட்டுமே பயன்படுத்தப்படுகிறது. மரபுக் குறியீடு என்பது ஒரு காலத்தில் பயனுள்ளதாக இருந்தது, ஆனால் இனி பயன்படுத்தப்படவில்லை அல்லது தேவையில்லை. ஆனால் அணுக முடியாத குறியீடு ஒரு சிக்கலான நூலகம், தொகுதி அல்லது வழக்கத்தின் ஒரு பகுதியாக இருக்கலாம், அங்கு அது மற்றவர்களுக்கு பயனுள்ளதாக இருக்கும் அல்லது ஒரு குறிப்பிட்ட சூழ்நிலையில் சந்திக்கப்படாத நிலைமைகளின் கீழ் இருக்கலாம். அத்தகைய நிபந்தனையுடன் அணுக முடியாத குறியீட்டின் ஒரு எடுத்துக்காட்டு, ஒரு தொகுப்பாளரின் இயக்க நேர நூலகத்தில் ஒரு பொதுவான சரம் வடிவமைத்தல் செயல்பாட்டை செயல்படுத்துவதாக இருக்கலாம், இது சாத்தியமான அனைத்து வாதங்களையும் செயலாக்க சிக்கலான குறியீட்டைக் கொண்டுள்ளது, அவற்றில் ஒரு சிறிய துணைக்குழு மட்டுமே உண்மையில் பயன்படுத்தப்படுகிறது. கம்பைலர்கள் பொதுவாக பயன்படுத்தப்படாத குறியீடு பிரிவுகளை தொகுக்கும் நேரத்தில் அகற்ற முடியாது, ஏனெனில் நடத்தை பெரும்பாலும் இயக்க நேரத்தில் வாதங்களின் மதிப்புகளால் தீர்மானிக்கப்படுகிறது. எடுத்துக்காட்டுகள் சி குறியீட்டின் இந்த துண்டில்ஃ இன்ட் ஃபூ (இன்ட் எக்ஸ், இன்ட் ஒய்) {ரிட்டர்ன் எக்ஸ் + ஒய்; இன்ட் இசட் = எக்ஸ் * ஒய்;} செயல்பாடு எப்போதும் அதற்கு முன் திரும்புவதால் வரையறையை ஒருபோதும் அடைய முடியாது. எனவே, தேவை சேமிப்பகத்தை ஒதுக்கவோ அல்லது துவக்கவோ கூடாது. பிப்ரவரி 2014 முதல் ஆப்பிளின் எஸ்எஸ்எல்/டிஎல்எஸ் முறைப்படி மற்றும் முறைசாரா முறையில் "கோட்டோ தோல்விப் பிழை" என்று அழைக்கப்படும் ஒரு பெரிய பாதுகாப்புக் குறைபாட்டைக் கொண்டிருந்தது. தொடர்புடைய குறியீடு துண்டு பின்வருமாறுஃ நிலையான OSStatus SLVerifyServerKeeExchange (எஸ். எஸ். எல். சி. உரை * ctx, பூல் isRsa, எஸ். எஸ். எல். பஃபர் கையொப்பமிடப்பட்ட பாரம்கள், uint8 _ t * கையொப்பம், UInt16 கையொப்பம்) {OSStatus err; என்றால் ((err = SSLHashSHA1.update (& hashCtx, & ServerRandom)! = 0) தோல்வியுற்றால்; (err = SSLHashSHA1.update (& hashCtx, & கையொப்பமிடப்பட்ட பாரம்கள்)! = 0) தோல்வியுற்றால்; தோல்வியுற்றால் ((err = SSLHashSHA1.final) சி மொழியின் சொற்றொடரில், இரண்டாவது நிபந்தனையற்றது, எனவே எப்போதும் SSLHashSHA1.final க்கு அழைப்பைத் தவிர்க்கிறது. இதன் விளைவாக, SHA1 புதுப்பிப்பு செயல்பாட்டின் நிலையை err வைத்திருக்கும், மேலும் கையொப்ப சரிபார்ப்பு ஒருபோதும் தோல்வியடையாது. இங்கே, அணுக முடியாத குறியீடு இறுதி செயல்பாட்டிற்கான அழைப்பு ஆகும். க்ளாங் தொகுப்பை விருப்பத்துடன் பயன்படுத்துவது-எல்லாவற்றிலும் அணுக முடியாத குறியீடு பகுப்பாய்வு அடங்கும், இது இந்த குறியீட்டிற்கான அலாரத்தைத் தூண்டும். சி + + இல், சில கட்டமைப்புகள் வரையறுக்கப்படாத நடத்தையைக் கொண்டுள்ளன. ஒரு தொகுப்பாளர் எந்தவொரு நடத்தையையும் அல்லது ஒன்றையும் செயல்படுத்த சுதந்திரமாக இருக்கிறார், மேலும் பொதுவாக ஒரு உகந்த தொகுப்பாளர் குறியீட்டை அணுக முடியாது என்று கருதுவார். அணுக முடியாத குறியீட்டின் பகுப்பாய்வு கண்டறிதல் என்பது எந்தவொரு சாத்தியமான நிரல் நிலையிலும் ஒருபோதும் அடைய முடியாத குறியீட்டைக் கண்டறிய கட்டுப்பாட்டு ஓட்ட பகுப்பாய்வின் ஒரு வடிவமாகும். சில மொழிகளில் (எ. ஜாவா) அணுக முடியாத குறியீட்டின் சில வடிவங்கள் வெளிப்படையாக அனுமதிக்கப்படவில்லை. அணுக முடியாத குறியீட்டை அகற்றும் உகப்பாக்கம் டெட் கோட் நீக்குதல் என்று அழைக்கப்படுகிறது. உகந்த தொகுப்பாளரால் நிகழ்த்தப்படும் மாற்றங்களின் விளைவாக குறியீடு அணுக முடியாததாக மாறக்கூடும் (எ. கா., பொதுவான துணை வெளிப்பாடு நீக்கம்). நடைமுறையில் பகுப்பாய்வின் நுட்பமானது கண்டறியப்படாத குறியீட்டின் அளவில் குறிப்பிடத்தக்க தாக்கத்தை ஏற்படுத்துகிறது. எடுத்துக்காட்டாக, நிலையான மடிப்பு மற்றும் எளிய ஓட்ட பகுப்பாய்வு பின்வரும் குறியீட்டில் உள்ள இஃப்-அறிக்கையின் உட்புறம் அணுக முடியாதது என்பதைக் காட்டுகிறதுஃ இன்ட் N = 2 + 1; (N = 4) {/* அணுக முடியாதது */} இருப்பினும், பின்வரும் குறியீட்டில் தொடர்புடைய தொகுதி அணுக முடியாதது என்பதைக் கண்டறிய அதிக நுட்பமான தேவைப்படுகிறதுஃ இரட்டை X = sqrt (2); (X> 5) {/* அணுக முடியாதது */} அணுக முடியாத குறியீடு நீக்குதல் நுட்பம் டெட் கோட் நீக்குதல் மற்றும் தேவையற்ற குறியீடு நீக்குதல் போன்ற உகப்பாக்கங்களின் அதே வகுப்பில் இருந்தால். அணுக முடியாத தன்மை மற்றும் விவரக்குறிப்பு சில சந்தர்ப்பங்களில், ஒரு நடைமுறை அணுகுமுறை எளிய அணுக முடியாத அளவுகோல்கள் மற்றும் மிகவும் சிக்கலான நிகழ்வுகளைக் கையாள ஒரு விவரக்குறிப்பைப் பயன்படுத்துவதன் கலவையாக இருக்கலாம். பொதுவாக விவரக்குறிப்பு ஒரு குறியீட்டின் அணுக முடியாத தன்மை பற்றி எதையும் நிரூபிக்க முடியாது, ஆனால் அணுக முடியாத குறியீட்டைக் கண்டுபிடிப்பதற்கு ஒரு நல்ல ஆய்வாக இருக்கலாம். ஒரு சந்தேகத்திற்கிடமான குறியீடு கண்டுபிடிக்கப்பட்டவுடன், மிகவும் சக்திவாய்ந்த குறியீடு பகுப்பாய்வு கருவி அல்லது கையால் பகுப்பாய்வு போன்ற பிற முறைகள் கூட குறியீடு உண்மையிலேயே அணுக முடியாததா என்பதை தீர்மானிக்க பயன்படுத்தப்படலாம். குறியீடு கவரேஜ் ரெடண்டன்ட் குறியீடு டெட் குறியீடு ஆக்ஸ்போ குறியீடு குறிப்புகள் அப்பெல், ஏ. டபிள்யூ. 1998 நவீன தொகுப்பு செயல்படுத்தல் ஜாவாவிலும் பார்க்கவும். கேம்பிரிட்ஜ் பல்கலைக்கழக அச்சகம். மச்னிக் எஸ். எஸ். 1997 மேம்பட்ட தொகுப்பு வடிவமைப்பு மற்றும் செயல்படுத்தல். மோர்கன் காஃப்மேன். தொகுப்பு உகப்பாக்கம் மென்பொருள் முரண்பாடுகள் மூலக் குறியீடு