কম্পিউটার

সি ভাষায় Realloc কি?


C লাইব্রেরি মেমরি বরাদ্দকরণ ফাংশন void *realloc(void *ptr, size_t size) ptr দ্বারা নির্দেশিত মেমরি ব্লকের আকার পরিবর্তন করার চেষ্টা করে যা আগে malloc বা calloc-এ একটি কলের সাথে বরাদ্দ করা হয়েছিল।

মেমরি বরাদ্দ ফাংশন

মেমরি দুটি উপায়ে বরাদ্দ করা যেতে পারে যেমন নীচে ব্যাখ্যা করা হয়েছে −

সি ভাষায় Realloc কি?

একবার কম্পাইলের সময় মেমরি বরাদ্দ করা হলে, এটি কার্যকর করার সময় পরিবর্তন করা যাবে না। হয় অপর্যাপ্ততার সমস্যা হবে নয়তো স্মৃতির অপচয় হবে।

সমাধান হল মেমরিকে গতিশীলভাবে তৈরি করা, অর্থাৎ প্রোগ্রাম চালানোর সময় ব্যবহারকারীর প্রয়োজন অনুযায়ী।

ডায়নামিক মেমরি ম্যানেজমেন্টের জন্য ব্যবহৃত স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলি নিম্নরূপ -

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • মুক্ত ( )

রিয়েললক ( ) ফাংশন

  • এটি ইতিমধ্যে বরাদ্দ করা মেমরি পুনরায় বরাদ্দ করার জন্য ব্যবহৃত হয়৷

  • এটি বরাদ্দ মেমরি হ্রাস বা বৃদ্ধি করতে পারে৷

  • এটি একটি অকার্যকর পয়েন্টার প্রদান করে যা পুনরায় বরাদ্দকৃত মেমরির মূল ঠিকানা নির্দেশ করে।

realloc() ফাংশনের সিনট্যাক্স নিম্নরূপ -

Free void *realloc (pointer, newsize);

উদাহরণ

নিম্নলিখিত উদাহরণটি realloc() ফাংশনের ব্যবহার দেখায়।

int *ptr;
ptr = (int * ) malloc (1000);// we can use calloc also
- - -
- - -
- - -
ptr = (int * ) realloc (ptr, 500);
- - -
- - -
ptr = (int * ) realloc (ptr, 1500);

উদাহরণ

নিচে দেওয়া হল C প্রোগ্রামটি realloc () ফাংশন −

ব্যবহার করে
#include<stdio.h>
#include<stdlib.h>
int main(){
   int *ptr, i, num;
   printf("array size is 5\n");
   ptr = (int*)calloc(5, sizeof(int));
   if(ptr==NULL){
      printf("Memory allocation failed");
      exit(1); // exit the program
   }
   for(i = 0; i < 5; i++){
      printf("enter number at %d: ", i);
      scanf("%d", ptr+i);
   }
   printf("\nLet's increase the array size to 7\n ");
   ptr = (int*)realloc(ptr, 7 * sizeof(int));
   if(ptr==NULL){
      printf("Memory allocation failed");
      exit(1); // exit the program
   }
   printf("\n enter 2 more integers\n\n");
   for(i = 5; i < 7; i++){
      printf("Enter element number at %d: ", i);
      scanf("%d", ptr+i);
   }
   printf("\n result array is: \n\n");
   for(i = 0; i < 7; i++){
      printf("%d ", *(ptr+i) );
   }
   return 0;
}

আউটপুট

যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -

array size is 5
enter number at 0: 23
enter number at 1: 12
enter number at 2: 45
enter number at 3: 67
enter number at 4: 20
Let's increase the array size to 7
enter 2 more integers
Enter element number at 5: 90
Enter element number at 6: 60
result array is:
23 12 45 67 20 90 60

  1. C ভাষায় strcmp() ফাংশন কি?

  2. সি ভাষায় একটি malloc ফাংশন কি?

  3. সি ভাষায় একটি শনাক্তকারী কি?

  4. C# প্রোগ্রামিং কি?