Obstack
সি প্রোগ্রামিং ভাষায়, অবস্ট্যাক হল সি স্ট্যান্ডার্ড লাইব্রেরির একটি মেমরি-ম্যানেজমেন্ট জিএনইউ এক্সটেনশন। একটি "অবস্ট্যাক" হল "অবজেক্ট" (ডেটা আইটেম)-এর একটি "স্ট্যাক" যা গতিশীলভাবে পরিচালিত হয়। এটি একটি অঞ্চল-ভিত্তিক মেমরি ম্যানেজমেন্ট স্কিম প্রয়োগ করে। অবস্ট্যাক কোড সাধারণত সি ম্যাক্রো সরবরাহ করে যা ব্যবহারকারীর জন্য মেমরি বরাদ্দ এবং পরিচালনার যত্ন নেয়। মূলত, অবস্ট্যাকগুলি মেমরি ম্যানেজমেন্টের একটি রূপ হিসাবে ব্যবহৃত হয় যা বিভিন্ন পরিস্থিতিতে ম্যালোক/ফ্রি-র তুলনায় আরও দক্ষ এবং বাস্তবায়ন করা কম কঠিন হতে পারে। উদাহরণস্বরূপ, ধরুন ডেটা আইটেমগুলি পরিচালনা করার জন্য একটি স্ট্যাক সেট আপ করতে হবে যার সংখ্যা কিছু সময়ের জন্য বৃদ্ধি পায় এবং তারপর একটি চূড়ান্ত আকারে পৌঁছায়; এই ধরনের স্ট্যাককে obstack.h-এ সংজ্ঞায়িত করা যেতে পারে। বরাদ্দকৃত বস্তুগুলিকে মুক্ত করা একবার অবস্ট্যাকে স্মৃতির একটি নতুন অংশ বরাদ্দ করা হলে এটি ব্যবহারের পরে অবশ্যই মুক্ত করতে হবে। ফাংশন এবং ম্যাক্রো অবস্ট্যাক ব্যবহারের জন্য ইন্টারফেসগুলি কম্পাইলারের উপর নির্ভর করে ফাংশন বা ম্যাক্রো হিসাবে সংজ্ঞায়িত করা যেতে পারে। অবস্ট্যাক সুবিধাটি সমস্ত সি কম্পাইলারের সাথে কাজ করে। একটি পুরানো ধাঁচের অ-আইএসও সি সংকলকের মধ্যে, সমস্ত অবস্ট্যাক ফাংশনগুলি আসলে শুধুমাত্র ম্যাক্রো হিসাবে সংজ্ঞায়িত করা হয়। আপনি এই ম্যাক্রোগুলিকে ফাংশনগুলির মতো কল করতে পারেন, তবে আপনি এগুলি অন্য কোনও উপায়ে ব্যবহার করতে পারবেন না। উদাহরণস্বরূপ, আপনি তাদের ঠিকানা নিতে পারবেন না। ম্যাক্রো কল করার জন্য একটি বিশেষ সতর্কতা প্রয়োজনঃ যথা, প্রথম অপারেন্ডে (অবস্ট্যাক পয়েন্টার) কোনও পার্শ্ব প্রতিক্রিয়া থাকা উচিত নয়, কারণ এটি একাধিকবার গণনা করা যেতে পারে। আইএসও সি-তে, প্রতিটি অবস্ট্যাক ফাংশনের একটি ম্যাক্রো সংজ্ঞা এবং একটি ফাংশন সংজ্ঞা উভয়ই রয়েছে। ম্যাক্রো প্রতিস্থাপন ব্যর্থ হলে ফাংশনের সংজ্ঞা ব্যবহার করা হয়। একটি সাধারণ কল ডিফল্টরূপে ম্যাক্রো সংজ্ঞা ব্যবহার করে, তবে আপনি বন্ধনীতে ফাংশনের নাম লিখে পরিবর্তে ফাংশনের সংজ্ঞার অনুরোধ করতে পারেন, যেমন এখানে দেখানো হয়েছেঃ চার * এক্স; অকার্যকর * (* ফানসিপি) (); এক্স = অবস্ট্যাক _ অ্যালোক (ওবপ্টার, আকার);/* ম্যাক্রো ব্যবহার করুন। */x = (ওব্স্ট্যাক _ অ্যালোক) (ওবিটিআর, আকার);/* ফাংশনটি কল করুন। */funcp = obstack _ aloc;/* ফাংশনের ঠিকানা নিন। */স্ট্যান্ডার্ড লাইব্রেরি ফাংশনের জন্য আইএসও সি-তে এই একই পরিস্থিতি বিদ্যমান। ক্রমবর্ধমান বস্তু যেহেতু একটি অবস্ট্যাকের মেমরি অংশগুলি ক্রমানুসারে ব্যবহার করা হয়, তাই এর শেষে 'বাইট' আকারের তথ্য যোগ করে একটি বস্তু তৈরি করা সম্ভব। কোনও বস্তুকে ধাপে ধাপে গড়ে তোলার এই কৌশলকে 'কোনও বস্তুর বৃদ্ধি' বলা হয়। রেফারেন্স বাহ্যিক লিঙ্ক অবস্ট্যাকস-জিএনইউ সি লাইব্রেরি বিমূর্ত তথ্য প্রকার জিএনইউ প্রকল্প