Pointer swizzling
کمپیوٹر سائنس میں، پوائنٹر سوئزلنگ نام یا پوزیشن پر مبنی حوالہ جات کو براہ راست پوائنٹر حوالہ جات (میموری ایڈریس) میں تبدیل کرنا ہے۔ یہ عام طور پر ڈسک فائل سے کسی قابل منتقلی آبجیکٹ کی ڈیسیریلائزیشن یا لوڈنگ کے دوران انجام دیا جاتا ہے، جیسے کہ قابل عمل فائل یا پوائنٹر پر مبنی ڈیٹا ڈھانچہ۔ ریورس آپریشن، میموری پوائنٹرز کو پوزیشن سے آزاد علامتوں یا پوزیشنوں سے تبدیل کرنا، بعض اوقات غیر متحرک کہا جاتا ہے، اور سیریلائزیشن (بچت) کے دوران انجام دیا جاتا ہے۔ مثال اس طرح کے عناصر کا استعمال کرتے ہوئے لنکڈ لسٹ ڈیٹا اسٹرکچر بنانا آسان ہے: اسٹرک نوڈ {int ڈیٹا ؛ اسٹرک نوڈ * نیکسٹ ؛} لیکن لسٹ کو فائل میں محفوظ کرنا اور پھر اسے دوبارہ لوڈ کرنا (زیادہ تر آپریٹنگ سسٹمز پر) ہر لنک کو توڑ دے گا اور لسٹ کو بیکار بنا دے گا کیونکہ نوڈس تقریبا کبھی بھی ایک ہی میموری لوکیشن میں لوڈ نہیں ہوں گے۔ فہرست کو مفید طریقے سے محفوظ کرنے اور بازیافت کرنے کا ایک طریقہ یہ ہے کہ ہر نوڈ کو ایک منفرد شناختی نمبر تفویض کیا جائے اور پھر پوائنٹرز کو اگلے نوڈ کے شناختی نمبر کی نشاندہی کرنے والے فیلڈ میں تبدیل کر کے ان کو بے ترتیب کیا جائے: اسٹرکٹ نوڈ _ سیوڈ {انٹ ڈیٹا ؛ انٹ آئی ڈی _ نمبر ؛ انٹ آئی ڈی _ نمبر _ آف _ نیکسٹ _ نوڈ ؛} ؛ اس طرح کے ریکارڈ کو کسی بھی ترتیب میں فائل میں محفوظ کیا جا سکتا ہے اور فہرست کو توڑے بغیر دوبارہ لوڈ کیا جا سکتا ہے۔ دوسرے اختیارات میں اگلے نوڈ کی فائل آفسیٹ کو محفوظ کرنا یا محفوظ شدہ ریکارڈ کی ترتیب میں اس کی پوزیشن کی نشاندہی کرنے والا نمبر، یا صرف نوڈس کو فائل کے ترتیب میں محفوظ کرنا شامل ہے۔ اس طرح کی فہرست کو لوڈ کرنے کے بعد، اس کے نمبر کی بنیاد پر نوڈ تلاش کرنا مشکل اور غیر موثر (سیریل سرچ) ہے۔ اصل "اگلے" اشارے کے ساتھ فہرست کو عبور کرنا بہت تیز تھا۔ فہرست کو اس کی اصل شکل میں واپس تبدیل کرنے کے لیے، یا پوائنٹرز کو تبدیل کرنے کے لیے، ہر نوڈ کا پتہ تلاش کرنے اور آئی ڈی _ نمبر _ آف _ نیکسٹ _ نوڈ فیلڈز کو دائیں نوڈ پر براہ راست پوائنٹرز میں واپس کرنے کی ضرورت ہوتی ہے۔ انسوزلنگ کے طریقے ممکنہ طور پر لامحدود تعداد میں فارم ہوتے ہیں جن میں پوائنٹر کو انسویل کیا جا سکتا ہے، لیکن کچھ سب سے زیادہ مقبول میں شامل ہیں: فائل میں پوائنٹ ٹو آبجیکٹ کا آفسیٹ ریکارڈز کی کچھ ترتیب میں پوائنٹ ٹو آبجیکٹ کا انڈیکس پوائنٹ ٹو آبجیکٹ کے پاس موجود ایک منفرد شناخت کنندہ، جیسے کہ کسی شخص کا سوشل سیکیورٹی نمبر ؛ ڈیٹا بیس میں، تمام پوائنٹروں کو اس انداز میں انسویل کیا جاتا ہے (غیر ملکی کلید دیکھیں)۔ عام صورت میں سوئزلنگ کے طریقے پیچیدہ ہو سکتے ہیں۔ پوائنٹرز کے حوالہ گراف میں چکروں کی صوابدیدی تعداد ہو سکتی ہے ؛ اس سے پرانی غیر تبدیل شدہ اقدار سے نئے پتے تک نقشہ سازی کو برقرار رکھنا پیچیدہ ہو جاتا ہے۔ ملحقہ صف نقشہ سازی کو برقرار رکھنے کے لیے مفید ہیں، جبکہ الگورتھم جیسے کہ چوڑائی-پہلی تلاش گراف کو عبور کرنے میں مدد کرتی ہے، حالانکہ ان دونوں کے لیے اضافی اسٹوریج کی ضرورت ہوتی ہے۔ مختلف سیریلائزیشن لائبریریاں عام سوئزلنگ سسٹم فراہم کرتی ہیں۔ تاہم، بہت سے معاملات میں، سوئزلنگ کو آسان مفروضوں کے ساتھ انجام دیا جا سکتا ہے، جیسے کہ ٹری یا حوالہ جات کی فہرست کا ڈھانچہ۔ سوئزلنگ کی مختلف اقسام یہ ہیں: آٹومیٹک سوئزلنگ آن ڈیمانڈ سوئزلنگ ممکنہ حفاظتی کمزوریاں سیکیورٹی کے لیے، غیر سوئزلنگ اور سوئزلنگ کو بڑی احتیاط کے ساتھ نافذ کیا جانا چاہیے۔ خاص طور پر، حملہ آور کی طرف سے خصوصی طور پر تیار کردہ فائل کی پیشکش متوقع اور مناسب حدود سے باہر کے پتے تک رسائی کی اجازت دے سکتی ہے۔ کمزور میموری پروٹیکشن والے سسٹمز میں یہ خفیہ ڈیٹا کی نمائش یا کوڈ میں ترمیم کا باعث بن سکتا ہے جس پر عمل درآمد ہونے کا امکان ہے۔ اگر سسٹم ڈیٹا پر عمل درآمد کے خلاف محافظوں کو نافذ نہیں کرتا ہے تو مختلف قسم کے میلویئر کی تنصیب سے سسٹم کو شدید نقصان پہنچ سکتا ہے۔ تحفظ کے طریقوں میں کسی ایپلی کیشن کو ڈیٹا جاری کرنے سے پہلے تصدیق شامل ہے: کہ ہر آفسیٹ پڑھے گئے ڈیٹا کی حدود میں ہے۔ کہ اشاریہ جات اور ریکارڈوں کی ایک میز جس کی طرف اشارہ کیا گیا ہے اسی طرح محدود ہے۔ وہ شناخت کار منفرد ہوتے ہیں اور اگر حساس ہوتے ہیں تو خفیہ شدہ ہوتے ہیں۔ کہ تمام متغیر لمبائی کا ڈیٹا اس لمبائی تک محدود ہے جو اصل مختص سے زیادہ نہ ہو۔ یہ مختص معقول سائز کے ہیں۔ وہ مختصیاں جو ڈیٹا ریڈ سے بھری ہوئی نہیں ہیں، صاف کر دی جاتی ہیں، یا کسی مخصوص پیٹرن سے بھری ہوتی ہیں۔ مزید پڑھیں (49 صفحات) میموری مینجمنٹ، پوائنٹر ترمیم حوالہ جات کی ایک پرجوش شکل، نقل مکانی بھی دیکھیں۔