Pointer swizzling
कंप्यूटर विज्ञान में, पॉइंटर स्विजलिंग नाम या स्थिति के आधार पर संदर्भों का प्रत्यक्ष पॉइंटर संदर्भों (स्मृति पते) में रूपांतरण है। यह आम तौर पर एक निष्पादन योग्य फ़ाइल या सूचक-आधारित डेटा संरचना जैसे डिस्क फ़ाइल से किसी स्थानांतरणीय वस्तु के विलयन या लोडिंग के दौरान किया जाता है। रिवर्स ऑपरेशन, मेमोरी पॉइंटर्स को स्थिति-स्वतंत्र प्रतीकों या स्थितियों के साथ प्रतिस्थापित करना, कभी-कभी अनस्विजलिंग के रूप में संदर्भित किया जाता है, और क्रमिककरण (बचत) के दौरान किया जाता है। उदाहरण इस तरह के तत्वों का उपयोग करके एक लिंक की गई सूची डेटा संरचना बनाना आसान हैः संरचना नोड {इंट डेटा; संरचना नोड * अगला;} लेकिन सूची को एक फ़ाइल में सहेजना और फिर इसे फिर से लोड करना (अधिकांश ऑपरेटिंग सिस्टम पर) हर लिंक को तोड़ देगा और सूची को बेकार कर देगा क्योंकि नोड्स को लगभग कभी भी एक ही मेमोरी स्थानों में लोड नहीं किया जाएगा। सूची को उपयोगी रूप से सहेजने और पुनः प्राप्त करने का एक तरीका यह है कि प्रत्येक नोड को एक विशिष्ट आई. डी. संख्या दी जाए और फिर उन्हें अगले नोड की आई. डी. संख्या को दर्शाने वाले क्षेत्र में बदलकर संकेतों को हटा दिया जाएः संरचना नोड _ सहेजा गया {आई. डी. डेटा; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; आई. डी. संख्या; अन्य विकल्पों में अगले नोड की फ़ाइल ऑफसेट को सहेजना या सहेजे गए रिकॉर्ड के अनुक्रम में अपनी स्थिति का संकेत देने वाली संख्या, या बस फ़ाइल के क्रम में नोड्स को सहेजना शामिल है। इस तरह की सूची को लोड करने के बाद, इसकी संख्या के आधार पर एक नोड खोजना बोझिल और अक्षम (क्रमिक खोज) है। मूल "अगले" संकेतों के साथ सूची को पार करना बहुत तेज था। सूची को उसके मूल रूप में वापस बदलने के लिए, या संकेतों को बदलने के लिए, प्रत्येक नोड का पता खोजने और आईडी _ नंबर _ ऑफ _ नेक्स्ट _ नोड फ़ील्ड को सीधे संकेतों में वापस सही नोड में बदलने की आवश्यकता होती है। अनस्विज़लिंग के तरीके संभावित रूपों की एक असीमित संख्या है जिसमें एक पॉइंटर को अनस्विज़ल्ड किया जा सकता है, लेकिन कुछ सबसे लोकप्रिय में शामिल हैंः फ़ाइल में पॉइंट-टू ऑब्जेक्ट का ऑफसेट रिकॉर्ड के कुछ अनुक्रम में पॉइंट-टू ऑब्जेक्ट का सूचकांक पॉइंट-टू ऑब्जेक्ट के पास एक अद्वितीय पहचानकर्ता है, जैसे कि किसी व्यक्ति की सामाजिक सुरक्षा संख्या; डेटाबेस में, सभी पॉइंटर्स को इस तरह से अनस्विज़ल्ड किया जाता है (विदेशी कुंजी देखें)। सामान्य मामले में स्विजलिंग के तरीके जटिल हो सकते हैं। संकेतों के संदर्भ ग्राफ में चक्रों की एक मनमाना संख्या हो सकती है; यह पुराने अपरिवर्तित मूल्यों से नए पतों तक मानचित्रण बनाए रखने को जटिल बनाता है। सहयोगी सरणी मानचित्रण को बनाए रखने के लिए उपयोगी हैं, जबकि चौड़ाई-पहली खोज जैसे एल्गोरिदम ग्राफ को पार करने में मदद करते हैं, हालांकि इन दोनों के लिए अतिरिक्त भंडारण की आवश्यकता होती है। विभिन्न क्रमिककरण पुस्तकालय सामान्य स्विजलिंग प्रणाली प्रदान करते हैं। हालाँकि, कई मामलों में, स्विजलिंग को सरल धारणाओं के साथ किया जा सकता है, जैसे कि एक वृक्ष या संदर्भों की सूची संरचना। स्विजलिंग के विभिन्न प्रकार हैंः स्वचालित स्विजलिंग ऑन-डिमांड स्विजलिंग संभावित सुरक्षा कमजोरियाँ सुरक्षा के लिए, अनस्विजलिंग और स्विजलिंग को बहुत सावधानी के साथ लागू किया जाना चाहिए। विशेष रूप से, एक हमलावर द्वारा विशेष रूप से तैयार की गई फ़ाइल की प्रस्तुति अपेक्षित और उचित सीमा के बाहर के पतों तक पहुंच की अनुमति दे सकती है। कमजोर स्मृति सुरक्षा वाली प्रणालियों में यह गोपनीय डेटा के संपर्क में आने या कोड के संशोधन को निष्पादित करने की संभावना पैदा कर सकता है। यदि सिस्टम डेटा के निष्पादन के खिलाफ गार्ड को लागू नहीं करता है तो विभिन्न प्रकार के मैलवेयर की स्थापना से सिस्टम गंभीर रूप से प्रभावित हो सकता है। सुरक्षा के तरीकों में किसी एप्लिकेशन को डेटा जारी करने से पहले सत्यापन शामिल हैंः कि प्रत्येक ऑफसेट पढ़ा गया डेटा की सीमा के भीतर है। कि अनुक्रमणिकाओं और अभिलेखों की एक तालिका समान रूप से सीमित है। वे पहचानकर्ता अद्वितीय हैं और, यदि संवेदनशील हैं, तो एन्क्रिप्टेड हैं। कि सभी चर-लंबाई डेटा वास्तविक आवंटन से अधिक की लंबाई तक सीमित नहीं है। कि आवंटन उचित आकार के हैं। किए गए आवंटन जो डेटा रीड से भरे नहीं हैं, उन्हें साफ़ कर दिया जाता है, या कुछ विशिष्ट पैटर्न के साथ लोड किया जाता है। स्थानांतरण भी देखें, सूचक संशोधन का एक उत्सुक रूप संदर्भ आगे पढ़ने के लिए (49 पृष्ठ) स्मृति प्रबंधन