কম্পিউটার টিউটোরিয়াল

C/C++-এ malloc() এবং free() কীভাবে কাজ করে?


malloc()

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

C ভাষায় malloc()-এর সিনট্যাক্স:

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

এখানে,

  • pointer_name — পয়েন্টারকে দেওয়া যেকোনো নাম।

  • cast-type — যে ডেটা টাইপে malloc() দ্বারা aloket করা মেমরি কাস্ট করতে চান।

  • size — aloket করা মেমরির সাইজ বাইটে।

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

free()

free() ফাংশনটি malloc() দ্বারা aloket করা মেমরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। এটি পয়েন্টারের মান পরিবর্তন করে না অর্থাৎ এটি এখনও একই মেমরি লোকেশনকে পয়েন্ট করে।

C ভাষায় free()-এর সিনট্যাক্স:

void free(void *pointer_name);

এখানে,

  • pointer_name — পয়েন্টারকে দেওয়া যেকোনো নাম।

C ভাষায় free() উদাহরণ:

উদাহরণ

#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);
    free(p);
    return 0;
}

আউটপুট

Enter elements of array: 32 23 21 28
Sum: 104

  1. C++-এ এক্সসেপশন কীভাবে কাজ করে

  2. C++-এ ভেক্টর কীভাবে কাজ করে?

  3. C++-এ মেম্বার ফাংশনে স্ট্যাটিক ভেরিয়েবল কীভাবে কাজ করে?

  4. C++-এ কম্বিনেশন এবং পারমিউটেশন কীভাবে গণনা করবেন?