यदि आप किसी लिंक की गई सूची में पॉइंटर्स में से किसी एक को दूषित कर दिया गया है या नहीं, तो आप कैसे पाएंगे?एक लिंक्ड सूची में भ्रष्ट सूचक
उत्तर
यह दर्द का प्रकार है, लेकिन आप प्रत्येक पॉइंटर के मान रिकॉर्ड कर सकते हैं जैसे आप अपने डीबगर के साथ आते हैं और यह सत्यापित करते हैं कि यह उस चीज़ के अनुरूप है जिसे आप ढूंढने की उम्मीद करेंगे (यदि आप एक सूचक होने की उम्मीद करेंगे कुल, सुनिश्चित करें कि यह शून्य है। यदि आप एक सूचक को पहले से मौजूद किसी वस्तु को संदर्भित करने की अपेक्षा करेंगे, तो सत्यापित करें कि उस ऑब्जेक्ट के पते में वह मान है, आदि)।
अपने नोड संरचनाओं में एक जादू मूल्य का परिचय दें। इसे नए नोड आवंटन पर शुरू करें। प्रत्येक पहुंच से पहले, जांचें कि क्या नोड संरचना है जो पॉइंटर पॉइंट्स में वैध जादू है। यदि सूचक एक अपठनीय डेटा ब्लॉक पर इंगित करता है, तो आपका प्रोग्राम क्रैश हो जाएगा। इसके लिए, विंडोज़ पर एपीआई वर्चुअलQuery() है - पढ़ने से पहले कॉल करें, और सुनिश्चित करें कि पॉइंटर पठनीय डेटा पर इंगित करता है।
'IsBadReadPtr()' को कॉल न करें [IsBadXxxPtr को वास्तव में क्रैशप्रोग्राम यादृच्छिक रूप से कहा जाना चाहिए] (http://blogs.msdn.com/b/oldnewthing/archive/2006/09/27/773741.aspx) कारण – Hasturkun
वर्चुअलQuery(), फिर। –
हेक्स में पठनीय जादू मान भी अच्छे हैं क्योंकि वे कोर, डिबगर्स इत्यादि में स्पष्ट हैं, उदा। क्लासिक 0xDEADBEEF – frankc
कई संभावनाएं हैं।
यदि सूची दोगुनी जुड़ी हुई है, तो पीछे सूचक पॉइंटर को इंगित करना संभव है कि फ्रंट पॉइंटर पॉइंट क्या है या इसके विपरीत।
यदि आपके पास अपेक्षित स्मृति पते की सीमा के बारे में कुछ विचार है, तो आप जांच सकते हैं। यह विशेष रूप से लिंक की गई सूची के बारे में सच है, प्रत्येक नोड को स्वतंत्र रूप से आवंटित करने के बजाय स्मृति की सीमित संख्या से आवंटित किया जाता है।
यदि नोड्स में उनमें कुछ पहचानने योग्य डेटा है, तो आप सूची को चला सकते हैं और पहचानने योग्य डेटा की जांच कर सकते हैं।
यह मुझे उन प्रश्नों में से एक जैसा दिखता है जहां साक्षात्कारकर्ता को एक स्नैपी उत्तर की उम्मीद नहीं है, बल्कि आपके प्रश्नों का विश्लेषण भी शामिल है।
एक सामान्य सी समाधान के रूप में, मैं कस्टम आवंटक का उपयोग कर मेमोरी एड्रेस बाउंड चेकिंग के साथ जाऊंगा। और निश्चित रूप से, वे अतिरिक्त प्रश्नों की उम्मीद कर रहे थे। – ruslik
यूओ एक दोगुनी जुड़ी सूची रख सकता है। फिर आप उस नोड-> बच्चे-> पैरेंट == नोड (हालांकि अगर नोड-> बच्चा भ्रष्ट हो गया है, तो इसका अपवाद पैदा करने का उचित मौका है)
कई डिबगर्स/बाउंड-चेकर्स आपके लिए यह करेंगे है, लेकिन इस सवाल का एक सस्ता और त्वरित समाधान एक अतिरिक्त चार [n] क्षेत्र (या अधिक आम तौर पर दो, पहली बार पिछले क्षेत्रों के रूप में अन्य के रूप में शामिल करने के लिए
- सूची नोड्स के ढांचे में परिवर्तन करने के लिए है संरचना में, इसलिए सूचक भ्रष्टाचार के अलावा सीमा-जांच की इजाजत देता है)।
- नोड्स बनने पर इन क्षेत्रों को एक छोटी (लेकिन लंबी पर्याप्त ...) निरंतर स्ट्रिंग जैसे "VaL1D-LiST-NODE 1234" के साथ आरंभ करें।
- जांचें कि इस (इन) फ़ील्ड में पढ़ने वाले मान अपेक्षित पाठ से मेल खाते हैं, प्रत्येक बार जब नोड को संदर्भित किया जाता है, और नोड में ईमानदारी से उपयोग करने से पहले।
जब क्षेत्र (रों) 'मूल्य इस मेल नहीं खाते या तो संकेत है कि है:
- सूचक अमान्य है किसी और
- कुछ (यह एक सूची नोड के लिए कभी नहीं बताया) अधिलेखन है नोड संरचना (सूचक "मान्य" है लेकिन यह जो डेटा इंगित करता है वह दूषित हो गया है)।
- 1. क्या भ्रष्ट डबल-लिंक्ड सूची 'का क्या मतलब है
- 2. लिंक्ड सूची
- 3. एक सी ++ सदस्य समारोह सूचक कॉलिंग: इस-सूचक भ्रष्ट
- 4. एक लिंक्ड सूची
- 5. जावा में लिंक्ड सूचियों की लिंक्ड सूची
- 6. लिंक्ड सूची समारोह
- 7. सी ++ वेक्टर/लिंक्ड सूची हाइब्रिड
- 8. किसी लिंक्ड सूची में भ्रष्टाचार ढूँढना
- 9. स्कैला लिंक्ड सूची stackoverflow
- 10. मल्टीथ्रेडेड लिंक्ड सूची ट्रैवर्सल
- 11. सी ++ लिंक्ड सूची व्यवहार
- 12. एक लिंक्ड सूची थ्रेड सुरक्षित बनाएं
- 13. एक डबल-लिंक्ड सूची साफ़ करना
- 14. इकाई की रूपरेखा लिंक्ड सूची
- 15. लिंक्ड सूची जिसमें अन्य लिंक्ड सूचियां और नि: शुल्क
- 16. क्या .NET में लिंक्डलिस्ट एक गोलाकार लिंक्ड सूची है?
- 17. एक लिंक्ड सूची में साइकिल का पता लगाने: संपूर्ण सिद्धांत
- 18. जावा में लिंक्डलिस्ट क्यों एक वास्तविक लिंक्ड सूची नहीं है?
- 19. एक malloc'd लिंक्ड सूची को/से एक बाइनरी फ़ाइल
- 20. स्थिरांक सूचक एक सूचक
- 21. जावा में, एक लिंक्ड सूची में एक निरंतर समय ऑपरेशन क्यों सम्मिलन या हटाना है? क्या यह भ्रामक नहीं है?
- 22. रैखिक लिंक्ड सूची - वैध/सामान्य शब्दावली?
- 23. लिंक्ड सूची विभाजन समारोह और उलट परिणाम
- 24. रेल सक्रिय ActiveRecord मॉडल लिंक्ड सूची
- 25. बनाम राइट लिंक्ड सूची वाम, बदलें गति
- 26. एक "भ्रष्ट" फ़ाइल कैसे बनाएं
- 27. जावा - एक लिंक्ड सूची को पुन: सक्रिय करना
- 28. सी ++ क्रमबद्ध क्रम में लिंक्ड सूची में जोड़ें
- 29. एक्सओआर लिंक्ड सूची के लिए सी कोड
- 30. लिंक्ड सूची पूंछ को जोड़ने, भ्रम
पाठ्यक्रम के डीबगर के साथ। हार्डवेयर अपवाद भी मदद करता है। –
यह होमवर्क? या क्या आपको कुछ ऐसा करने की ज़रूरत है जो आप स्वयं कर रहे हैं? – wheaties
भ्रष्ट से आपका क्या मतलब है?यदि यह सूची में अगले तत्व को इंगित नहीं कर रहा है, तो बताने का कोई आसान तरीका नहीं है। –