calloc() Function in Hindi
/ BCA / Programming with C and CPP
calloc() Function in Hindi
calloc() Function in Hindi
Introduction to calloc() Function in Hindi
जब हम C या C++ जैसी programming language में memory को dynamically allocate करना चाहते हैं, तो हम calloc(), malloc(), realloc() जैसे functions का इस्तेमाल करते हैं। इन functions की मदद से हम runtime पर memory assign कर सकते हैं। इसका अर्थ यह है कि program को चलाते समय जितनी memory की आवश्यकता हो उतनी memory system से ली जा सकती है।
इस लेख में हम calloc() function के बारे में विस्तार से सीखेंगे। यह function खासतौर पर beginners के लिए बहुत उपयोगी होता है क्योंकि यह एक साथ कई blocks की memory allocate करता है और उन्हें initialize भी करता है।
calloc() का full form है - Contiguous Allocation जिसका अर्थ होता है - लगातार memory blocks का allocation।
Syntax of calloc() Function in Hindi
calloc() function का syntax बहुत ही सरल होता है। नीचे इसका basic structure दिया गया है -
ptr = (cast_type *) calloc(number_of_blocks, size_of_each_block);
यहाँ:
- ptr: यह pointer है जो calloc() से मिली हुई memory को store करता है।
- cast_type: यह उस data type का नाम होता है जिसे आप memory के रूप में रखना चाहते हैं, जैसे int, float, etc.
- number_of_blocks: यह बताता है कि हमें कितने blocks चाहिए।
- size_of_each_block: यह बताता है कि हर block का size कितना होगा।
उदाहरण:
int *ptr;
ptr = (int *) calloc(5, sizeof(int));
इस उदाहरण में:
- 5 blocks allocate किए गए हैं
- हर block का size एक int जितना है
- calloc function हर block को 0 से initialize करता है
calloc() Function vs malloc() Function in Hindi
calloc() और malloc() दोनों ही memory allocate करने के लिए उपयोग किए जाते हैं, लेकिन इनके बीच कुछ महत्वपूर्ण अंतर होते हैं। नीचे एक table के माध्यम से इनका comparison किया गया है -
| विशेषता | calloc() | malloc() |
|---|---|---|
| Memory Initialization | 0 से initialize करता है | कोई initialization नहीं करता (garbage value रहती है) |
| Parameters | दो parameters लेता है - blocks और size | एक parameter लेता है - total size |
| Speed | थोड़ा slower होता है | थोड़ा fast होता है |
| Use Cases | जब memory को initialize करना जरूरी हो | जब initialization की आवश्यकता न हो |
तो यदि आप चाहते हैं कि memory allocate होते ही उसमें value 0 हो जाए, तो calloc() function ज्यादा बेहतर होता है।
Use Cases of calloc() Function in Hindi
आइए जानते हैं किन-किन practical situations में हम calloc() function का उपयोग करते हैं -
- Array Creation: जब हमें runtime पर एक array बनाना हो और सभी elements को 0 से initialize करना हो, तब calloc() ideal है।
- 2D Array Allocation: जब multi-dimensional array को allocate करना हो तो हम multiple calloc() calls से row-wise memory ले सकते हैं।
- Linked List Implementation: जब हम linked list या अन्य data structures बनाते हैं, तब हर node को calloc() से allocate किया जाता है ताकि default values 0 हों।
- Form Input Memory Allocation: जब किसी application में user से dynamic data input लिया जाता है, और input की size runtime पर पता चलती है।
नीचे एक example दिया गया है जिसमें calloc() का उपयोग किया गया है:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr;
int n = 5, i;
arr = (int*) calloc(n, sizeof(int));
if (arr == NULL) {
printf("Memory not allocated!");
exit(0);
}
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
इस program में:
- 5 integers के लिए memory allocate की गई है
- हर integer value को default रूप से 0 set किया गया है
- अंत में memory को free किया गया है जिससे memory leak न हो
calloc() function से जुड़ी कुछ अतिरिक्त बातें जान लेना जरूरी है:
- यह stdlib.h header file में define होता है, इसलिए इस header को जरूर include करें।
- calloc() memory allocation के बाद NULL pointer return करता है यदि memory allocate न हो पाए।
- calloc द्वारा दी गई memory heap memory से आती है, इसलिए उसे अंत में free() function से release करना जरूरी होता है।
कई बार students malloc और calloc के बीच confuse हो जाते हैं। simple भाषा में समझें तो अगर आपको "खाली थालियाँ (memory blocks)" चाहिए जिनमें पहले से खाना (data) न हो, सिर्फ zero हो, तो calloc() बेहतर है।
FAQs
ptr = (cast_type *) calloc(number_of_blocks, size_of_each_block);जहाँ cast_type data type होता है, और number_of_blocks तथा size_of_each_block वह मात्रा बताते हैं जितनी memory की आवश्यकता है।