पाठ 29 / 38

malloc, calloc, realloc, free

malloc, calloc, realloc और free से runtime पर heap memory allocate और release करें।

heap बनाम stack

लोकल वेरिएबल stack पर होते हैं और अपने आप गायब हो जाते हैं। heap वह मेमोरी है जिसे आप malloc परिवार के फंक्शनों से स्पष्ट रूप से माँगते हैं, और यह free करने तक आरक्षित रहती है।

malloc + free

malloc(n) कच्ची, बिना इनिशियलाइज़ की मेमोरी लौटाता है (या विफलता पर NULL)। काम पूरा होने पर हमेशा free से जोड़ें।

int *arr = malloc(5 * sizeof(int));
if (arr == NULL) {
    return 1; // allocation failed
}

for (int i = 0; i < 5; i++) arr[i] = i * i;
printf("%d\n", arr[4]);

free(arr);
arr = NULL;

Output:

16

calloc बनाम realloc

calloc(n, size) मेमोरी आवंटित करता है और उसे शून्य कर देता है। realloc(ptr, newSize) मौजूदा ब्लॉक को बढ़ाता या घटाता है, पुराना डेटा कॉपी करते हुए — हमेशा इसका परिणाम दोबारा असाइन करें, क्योंकि ब्लॉक हिल सकता है।