ম্যালক এবং কলক ফাংশন ব্যবহার করে বরাদ্দ করা মেমরি তাদের নিজের থেকে বরাদ্দ করা হয় না। তাই ফ্রি পদ্ধতি ব্যবহার করা হয়, যখনই ডায়নামিক মেমরি বরাদ্দ করা হয়। এটা মুক্ত করে স্মৃতির অপচয় কমাতে সাহায্য করে।
কীভাবে বরাদ্দ করা মেমরি বিনামূল্যে করা হয়?
C-তে, লাইব্রেরি ফাংশন malloc হিপে মেমরির একটি ব্লক বরাদ্দ করতে ব্যবহৃত হয়। প্রোগ্রামটি একটি পয়েন্টারের মাধ্যমে মেমরির এই ব্লকটি অ্যাক্সেস করে যা malloc ফেরত দেয়। যখন মেমরির আর প্রয়োজন হয় না, তখন পয়েন্টারটি ফ্রিতে পাঠানো হয় যা মেমরিটিকে ডিললোকেট করে যাতে এটি অন্য উদ্দেশ্যে ব্যবহার করা যায়।
আপনি যদি বরাদ্দ করা মেমরি খালি না করেন তাহলে কি হবে?
অধিকাংশ ক্ষেত্রে, প্রোগ্রাম থেকে বের হওয়ার ঠিক আগে মেমরি ডিলোকেটিং করা অর্থহীন। OS যেভাবেই হোক এটি পুনরুদ্ধার করবে। ফ্রি মৃত বস্তুতে স্পর্শ করবে এবং পেজ করবে; ওএস করবে না। ফলাফল: বরাদ্দ গণনা করে এমন "লিক ডিটেক্টর" সম্পর্কে সতর্ক থাকুন৷
মেমরি বরাদ্দ করা কি ব্যয়বহুল?
মেমরির বড় ব্লক বরাদ্দ এবং মুক্ত করার খরচের একটি নির্বোধ পরিমাপ এই সিদ্ধান্তে পৌঁছাবে যে প্রতিটি অ্যালোক/মুক্ত জোড়ার জন্য এটির খরচ প্রায় 7.5 μs। তবে বড় বরাদ্দের জন্য তিনটি আলাদা-এমবি খরচ রয়েছে৷
হ্যাঁ হলে কি বরাদ্দকৃত মেমরি স্পেস রিয়েললক করতে পারেন?
realloc ফাংশন নিম্নলিখিত নিয়মগুলির উপর ভিত্তি করে old_blk দ্বারা নির্দিষ্ট করা মেমরির ব্লক বরাদ্দ, পুনরায় বরাদ্দ বা মুক্ত করে: যদি old_blk NULL হয়, সাইজ বাইটের মেমরির একটি নতুন ব্লক হয়বরাদ্দ আকার শূন্য হলে, মুক্ত ফাংশনকে বলা হয় মেমরি রিলিজ করার জন্য যেটি old_blk দ্বারা নির্দেশ করা হয়েছে।