কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রামিং-এ ডাইনামিক মেমোরি অ্যালোকেশন কী?


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

  • এکسিকিউশন টাইমে (রান টাইম) মেমোরি অ্যালোকেশনকে ডাইনামিক মেমোরি অ্যালোকেশন বলা হয়।

  • calloc() এবং malloc() ফাংশনগুলো ডাইনামিক মেমোরি অ্যালোকেশনে সাহায্য করে।

  • ফাংশন থেকে রিটার্ন হওয়া মান পয়েন্টার ভেরিয়েবলে অ্যাসাইন করলে ডাইনামিক্যালি মেমোরি স্পেস অ্যালোকেট হয়।

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

  • এটি হিপ (heap) ডেটা স্ট্রাকচার ব্যবহার করে ডাইনামিক অ্যালোকেশন ইমপ্লিমেন্ট করে।

  • মেমোরি রিইউজ ও প্রয়োজন নেইলে মুক্ত করা সম্ভব।

  • এটি আরও দক্ষ।

  • এই মেমোরি অ্যালোকেশন স্কিমে, এক্সিকিউশন স্ট্যাটিক মেমোরি অ্যালোকেশন চেয়ে ধীর।

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

উদাহরণ

নিচের প্রোগ্রামটি ডাইনামিক মেমোরি অ্যালোকেশন ফাংশন ব্যবহার করে একটি সেট এলিমেন্টে জোড় ও বিজোড় সংখ্যার সমষ্টি বের করে −

#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 (DDNS) কী?

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

  3. ইন্টারফেস এবং সার্ভিস বলতে কী বোঝায়?

  4. C প্রোগ্রামিং-এ স্ট্যাটিক মেমরি অ্যালোকেশন কি?