C লাইব্রেরি মেমরি বরাদ্দকরণ ফাংশন void *calloc(size_t nitems, size_t size) অনুরোধ করা মেমরি বরাদ্দ করে এবং এটিতে একটি পয়েন্টার ফেরত দেয়।
malloc এবং calloc-এর মধ্যে পার্থক্য হল malloc মেমরিকে শূন্যতে সেট করে না, যেখানে calloc বরাদ্দ করা মেমরিকে শূন্যে সেট করে।
মেমরি বরাদ্দ ফাংশন
মেমরি দুটি উপায়ে বরাদ্দ করা যেতে পারে যেমন নীচে ব্যাখ্যা করা হয়েছে −
একবার কম্পাইলের সময় মেমরি বরাদ্দ করা হলে, এটি কার্যকর করার সময় পরিবর্তন করা যাবে না। হয় অপর্যাপ্ততার সমস্যা হবে নয়তো স্মৃতির অপচয় হবে।
সমাধান হল মেমরিকে গতিশীলভাবে তৈরি করা, অর্থাৎ প্রোগ্রাম চালানোর সময় ব্যবহারকারীর প্রয়োজন অনুযায়ী।
ডায়নামিক মেমরি ম্যানেজমেন্টের জন্য ব্যবহৃত স্ট্যান্ডার্ড লাইব্রেরি ফাংশনগুলি নিম্নরূপ -
- malloc ( )
- calloc ( )
- realloc ( )
- মুক্ত ( )
Calloc ( ) ফাংশন
-
এই ফাংশনটি রান টাইমে মেমরির ক্রমাগত ব্লক বরাদ্দ করার জন্য ব্যবহৃত হয়।
-
এটি বিশেষভাবে অ্যারেগুলির জন্য ডিজাইন করা হয়েছে৷
৷ -
এটি একটি অকার্যকর পয়েন্টার প্রদান করে, যা বরাদ্দকৃত মেমরির মূল ঠিকানা নির্দেশ করে।
calloc() ফাংশনের জন্য সিনট্যাক্স নিচে দেওয়া হল −
void *calloc ( numbers of elements, size in bytes)
উদাহরণ
নিচের উদাহরণটি calloc() ফাংশনের ব্যবহার দেখায়।
int *ptr; ptr = (int * ) calloc (500,2);
এখানে, 2 বাইটের আকারের প্রতিটি মেমরির 500 ব্লক ক্রমাগত বরাদ্দ করা হবে। মোট মেমরি বরাদ্দ =1000 বাইট।
int *ptr; ptr = (int * ) calloc (n, sizeof (int));
উদাহরণ প্রোগ্রাম
ডায়নামিক মেমরি বরাদ্দকরণ ফাংশন Calloc ব্যবহার করে উপাদানগুলির একটি সেটে জোড় সংখ্যা এবং বিজোড় সংখ্যার যোগফল গণনা করার জন্য একটি C প্রোগ্রাম নীচে দেওয়া হল৷
#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 Calloc// p = (int * ) calloc (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 : 12 56 23 10 The sum of even numbers is : 78 The sum of odd numbers is : 23