কম্পিউটার

C-তে calloc() বনাম malloc()


calloc()

ফাংশন calloc() সংলগ্ন অবস্থান বোঝায়। এটি malloc() এর মতোই কাজ করে তবে এটি একই আকারের প্রতিটি মেমরির একাধিক ব্লক বরাদ্দ করে৷

এখানে C ভাষায় calloc() এর সিনট্যাক্স রয়েছে,

void *calloc(size_t number, size_t size);

এখানে,

নম্বর - অ্যারের উপাদানগুলির সংখ্যা বরাদ্দ করতে হবে৷

আকার − বাইটে বরাদ্দ করা মেমরির আকার।

এখানে C ভাষাতে calloc() এর একটি উদাহরণ,

উদাহরণ

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

আউটপুট

Enter elements of array : 2 24 35 12
Sum : 73

উপরের প্রোগ্রামে, মেমরি ব্লক calloc() দ্বারা বরাদ্দ করা হয়। পয়েন্টার ভেরিয়েবল নাল হলে, কোন মেমরি বরাদ্দ নেই। পয়েন্টার ভেরিয়েবল নাল না হলে, ব্যবহারকারীকে অ্যারের চারটি উপাদান প্রবেশ করতে হবে এবং তারপর উপাদানগুলির যোগফল গণনা করা হবে৷

p = (int*) calloc(n, sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}

malloc()

ফাংশন malloc() বাইটের অনুরোধকৃত আকার বরাদ্দ করতে ব্যবহৃত হয় এবং এটি বরাদ্দকৃত মেমরির প্রথম বাইটে একটি পয়েন্টার প্রদান করে। ব্যর্থ হলে এটি নাল পয়েন্টার প্রদান করে।

এখানে C ভাষায় malloc() এর সিনট্যাক্স আছে,

pointer_name = (cast-type*) malloc(size);

এখানে,

পয়েন্টার_নাম − পয়েন্টারকে দেওয়া যেকোনো নাম।

কাস্ট-টাইপ − যে ডেটাটাইপটিতে আপনি malloc().

দ্বারা বরাদ্দ করা মেমরি কাস্ট করতে চান

আকার − বাইটে বরাদ্দ করা মেমরির আকার।

এখানে C ভাষায় malloc() এর একটি উদাহরণ,

উদাহরণ

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

এখানে আউটপুট,

আউটপুট

Enter elements of array : 32 23 21 8
Sum : 84

উপরের প্রোগ্রামে, চারটি ভেরিয়েবল ঘোষণা করা হয়েছে এবং তাদের মধ্যে একটি হল একটি পয়েন্টার ভেরিয়েবল *p যা malloc দ্বারা বরাদ্দ করা মেমরি সংরক্ষণ করছে। অ্যারের উপাদানগুলি ব্যবহারকারী দ্বারা মুদ্রিত হয় এবং উপাদানগুলির যোগফল মুদ্রিত হয়৷

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}
printf("\nSum : %d", s);

  1. ফ্রিওয়্যার বনাম শেয়ারওয়্যার – পার্থক্য কি?

  2. ফ্লাডিং বনাম ফিক্সড রাউটিং অ্যালগরিদম

  3. সেটিংস এবং সিঙ্কিং:ফায়ারফক্স বনাম ক্রোম

  4. এখানে মাইক্রোসফট বনাম উইন্ডোজ ... মানচিত্র