Obstack
سی پروگرامنگ زبان میں، اوبسٹیک سی معیاری لائبریری کے لیے میموری مینجمنٹ جی این یو کی توسیع ہے۔ "رکاوٹ" "اشیاء" (ڈیٹا آئٹمز) کا ایک "اسٹیک" ہے جو متحرک طور پر منظم ہوتا ہے۔ یہ خطے پر مبنی میموری مینجمنٹ اسکیم کو نافذ کرتا ہے۔ اوبسٹیک کوڈ عام طور پر سی میکرو فراہم کرتا ہے جو صارف کے لیے میموری مختص کرنے اور انتظام کا خیال رکھتا ہے۔ بنیادی طور پر، رکاوٹ کو میموری مینجمنٹ کی ایک شکل کے طور پر استعمال کیا جاتا ہے جو کئی حالات میں میلوک/فری کے مقابلے میں زیادہ موثر اور کم مشکل ہو سکتا ہے۔ مثال کے طور پر، فرض کریں کہ کسی کو ڈیٹا آئٹمز کو سنبھالنے کے لیے ایک اسٹیک ترتیب دینے کی ضرورت ہے جس کی تعداد تھوڑی دیر کے لیے بڑھتی ہے اور پھر حتمی شکل تک پہنچ جاتی ہے۔ اس طرح کے اسٹیک کی وضاحت obstack.h میں کی جا سکتی ہے۔ مختص شدہ اشیاء کو آزاد کرنا ایک بار جب آبجیکٹ کو رکاوٹ میں میموری کا ایک نیا حصہ مختص کیا جاتا ہے تو اسے اس کے استعمال کے بعد آزاد کرنا ضروری ہے۔ افعال اور میکرو رکاوٹ کے استعمال کے لیے انٹرفیس کو مرتب کرنے والے کے لحاظ سے افعال یا میکرو کے طور پر بیان کیا جا سکتا ہے۔ رکاوٹ کی سہولت تمام سی مرتب کرنے والوں کے ساتھ کام کرتی ہے۔ ایک پرانے زمانے کے غیر آئی ایس او سی مرتب میں، تمام رکاوٹ افعال کو دراصل صرف میکرو کے طور پر بیان کیا جاتا ہے۔ آپ ان میکرو کو فنکشنز کی طرح کال کر سکتے ہیں، لیکن آپ انہیں کسی اور طریقے سے استعمال نہیں کر سکتے۔ مثال کے طور پر، آپ ان کا پتہ نہیں لے سکتے۔ میکرو کو کال کرنے کے لیے ایک خاص احتیاط کی ضرورت ہوتی ہے: یعنی، پہلے آپریڈ (رکاوٹ پوائنٹر) میں کوئی مضر اثرات نہیں ہونے چاہئیں، کیونکہ اس کی گنتی ایک سے زیادہ بار کی جا سکتی ہے۔ آئی ایس او سی میں، ہر رکاوٹ فنکشن میں میکرو تعریف اور فنکشن کی تعریف دونوں ہوتی ہیں۔ اگر میکرو متبادل ناکام ہوجاتا ہے تو فنکشن کی تعریف استعمال کی جاتی ہے۔ ایک عام کال ڈیفالٹ طور پر میکرو ڈیفینیشن کا استعمال کرتی ہے، لیکن آپ اس کے بجائے قوسین میں فنکشن کا نام لکھ کر فنکشن کی تعریف کی درخواست کر سکتے ہیں، جیسا کہ یہاں دکھایا گیا ہے: چار * ایکس ؛ وایڈ * (* فنک پی) () ؛ ایکس = اوبسٹیک _ ایلوک (او بی پی ٹی آر، سائز) ؛/* میکرو کا استعمال کریں۔ */x = (رکاوٹ _ الاوک) (او بی پی ٹی آر، سائز) ؛/* فنکشن کو کال کریں۔ */funcp = obstack _ aloc ؛/* فنکشن کا پتہ لیں۔ */یہ وہی صورتحال ہے جو معیاری لائبریری افعال کے لیے آئی ایس او سی میں موجود ہے۔ چونکہ رکاوٹ میں میموری کے ٹکڑوں کو ترتیب وار استعمال کیا جاتا ہے، اس لیے کسی شے کے آخر میں سائز 'بائٹس' کا ڈیٹا شامل کرکے اس کی تعمیر ممکن ہے۔ کسی شے کی مرحلہ وار تعمیر کی اس تکنیک کو 'کسی شے کو بڑھانا' کہا جاتا ہے۔ حوالہ جات بیرونی روابط رکاوٹ-جی این یو سی لائبریری خلاصہ ڈیٹا ٹائپ جی این یو پروجیکٹ