কম্পিউটার

সি প্রোগ্রামিং এ ডায়নামিক মেমরি বরাদ্দ বলতে কি বুঝ?


ডাইনামিক মেমরি বরাদ্দ

  • এক্সিকিউশনের সময় মেমরির বরাদ্দ (রান টাইম) ডায়নামিক মেমরি বরাদ্দ হিসাবে পরিচিত।

  • ফাংশন calloc() এবং malloc() গতিশীল মেমরি বরাদ্দ সমর্থন করে।

  • যখন ফাংশন দ্বারা মান ফেরত দেওয়া হয় এবং পয়েন্টার ভেরিয়েবলে বরাদ্দ করা হয় তখন এই ফাংশনগুলি ব্যবহার করে মেমরির স্থানের গতিশীল বরাদ্দ করা হয়৷

  • এই ক্ষেত্রে, ভেরিয়েবলগুলি বরাদ্দ করা হয় শুধুমাত্র যদি আপনার প্রোগ্রাম ইউনিট সক্রিয় হয়।

  • এটি গতিশীল বরাদ্দ বাস্তবায়নের জন্য হিপ নামক ডেটা কাঠামো ব্যবহার করে।

  • মেমরির পুনঃব্যবহারযোগ্যতা রয়েছে এবং প্রয়োজন না হলে মেমরি মুক্ত করা যেতে পারে।

  • এটি আরও কার্যকর।

  • এই মেমরি বরাদ্দকরণ স্কিমে, স্থির মেমরি বরাদ্দের চেয়ে নির্বাহ করা ধীর।

  • এখানে প্রোগ্রাম চলাকালীন যেকোন সময় মেমরি প্রকাশ করা যেতে পারে।

উদাহরণ

নিম্নলিখিত প্রোগ্রামটি ডায়নামিক মেমরি বরাদ্দকরণ ফাংশন ব্যবহার করে উপাদানগুলির একটি সেটে জোড় সংখ্যা এবং বিজোড় সংখ্যার যোগফল গণনা করে -

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using malloc//
   p=(int *)malloc(n*sizeof(int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   printf("The elements are : \n");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
   }
   for(i=0;i<n;i++){
      if(*(p+i)%2==0){
         even=even+*(p+i);
      }
      else{
         odd=odd+*(p+i);
      }
   }
   printf("The sum of even numbers is : %d\n",even);
   printf("The sum of odd numbers is : %d\n",odd);
}

আউটপুট

Enter the number of elements : 4
The elements are :
35
24
46
12
The sum of even numbers is : 82
The sum of odd numbers is : 35

  1. ডাইনামিক DNS মানে কি?

  2. ডাইনামিক আইপি অ্যাড্রেস কী?

  3. ইন্টারফেস এবং পরিষেবা বলতে আপনি কি বোঝেন?

  4. সি প্রোগ্রামিং-এ স্ট্যাটিক মেমরি বরাদ্দ বলতে কী বোঝ?