পর্ব ১৯: ডাইনামিক মেমোরি অ্যালোকেশন | Dynamic Memory Allocation

🎯 এই পর্বে যা জানবে:

  • ডাইনামিক মেমোরি অ্যালোকেশন কী
  • malloc(), calloc(), realloc() এবং free() এর কাজ
  • কেন ও কখন ডাইনামিক মেমোরি দরকার
  • বাস্তব উদাহরণসহ কোড
  • মেমোরি লিক এড়ানোর উপায়

🧠 ডাইনামিক মেমোরি অ্যালোকেশন কী?

C প্রোগ্রামে সাধারণত আমরা স্ট্যাটিক মেমোরি ব্যবহার করি — যেমন অ্যারের সাইজ আগে থেকেই নির্ধারিত থাকে।
কিন্তু অনেক সময় প্রোগ্রাম চলার সময় (runtime) মেমোরি প্রয়োজন হয়, তখনই দরকার হয়
👉 ডাইনামিক মেমোরি অ্যালোকেশন (Dynamic Memory Allocation)

ডাইনামিক মেমোরি ব্যবহার করলে আমরা রানটাইমে মেমোরি তৈরি ও মুক্ত করতে পারি, ফলে প্রোগ্রাম আরও স্মার্ট ও কার্যকর হয়।


⚙️ কেন ডাইনামিক মেমোরি দরকার?

✅ যখন ডেটার সাইজ আগে থেকে জানা থাকে না
✅ বড় অ্যারে তৈরি করতে হয় কিন্তু নির্দিষ্ট সাইজ জানা নেই
✅ মেমোরি ব্যবহারে দক্ষতা বাড়াতে
✅ স্ট্যাক ওভারফ্লো সমস্যা এড়াতে


🔹 malloc() ফাংশন

malloc() অর্থ Memory Allocation — এটি নির্দিষ্ট বাইট পরিমাণ মেমোরি বরাদ্দ করে এবং তার শুরু অ্যাড্রেস রিটার্ন করে।

আউটপুট:


🔹 calloc() ফাংশন

calloc() অর্থ Contiguous Allocation — এটি একাধিক এলিমেন্টের জন্য মেমোরি বরাদ্দ করে এবং সমস্ত বাইট শূন্য (0) দিয়ে initialize করে।

এখানে ৫টি ইন্টিজার এলিমেন্টের জন্য মেমোরি বরাদ্দ হবে এবং সবগুলো 0 থাকবে।


🔹 realloc() ফাংশন

realloc() ব্যবহৃত হয় পূর্বে বরাদ্দ করা মেমোরি আবার বাড়ানো বা কমানোর জন্য

এখানে ৫টির জায়গায় এখন ১০টি এলিমেন্ট রাখা যাবে।


🔹 free() ফাংশন

free() ফাংশন দিয়ে বরাদ্দ করা মেমোরি মুক্ত করতে হয়, নইলে মেমোরি লিক হতে পারে।


⚠️ মেমোরি লিক (Memory Leak)

যদি প্রোগ্রাম শেষে free() ব্যবহার না করা হয়, তাহলে সেই মেমোরি সিস্টেমে থেকে যায় — একে বলে Memory Leak
বড় প্রোগ্রামে এটি পারফরম্যান্সে বড় ক্ষতি করতে পারে।


🚀 সংক্ষেপে

  • malloc() → একবারে মেমোরি বরাদ্দ
  • calloc() → একাধিক ব্লক বরাদ্দ ও 0 দিয়ে initialize
  • realloc() → পূর্বের ব্লক বাড়ানো/কমানো
  • free() → মেমোরি মুক্ত করা
  • মেমোরি লিক থেকে বাঁচতে সবসময় free() ব্যবহার করতে হবে
পর্ব ১৯: ডাইনামিক মেমোরি অ্যালোকেশন | Dynamic Memory Allocation

C প্রোগ্রামিং টিউটোরিয়াল (৩০ পর্বে)