malloc()

Mengalokasikan memori secara dinamis dalam C

Fungsi malloc() digunakan untuk mengalokasikan memori secara dinamis di heap. Berbeda dengan array statis, malloc() memungkinkan program untuk mengalokasikan memori sesuai kebutuhan saat runtime.

Sintaks

void *malloc(size_t size);
  • size âžœ Jumlah byte yang ingin dialokasikan.

  • Mengembalikan pointer ke blok memori yang dialokasikan.

  • Jika gagal, mengembalikan NULL.

Contoh Penggunaan

1. Mengalokasikan memori untuk integer

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr;

    // Alokasi memori untuk satu integer
    ptr = (int*) malloc(sizeof(int));

    if (ptr == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    *ptr = 42;  // Menyimpan nilai ke dalam memori yang dialokasikan
    printf("Nilai yang disimpan: %d\n", *ptr);

    free(ptr);  // Membebaskan memori yang sudah dialokasikan
    return 0;
}

Hasilnya:

Nilai yang disimpan: 42
  • malloc(sizeof(int)) âžœ Mengalokasikan 4 byte untuk satu integer.

  • Memeriksa NULL âžœ Jika alokasi gagal, program akan keluar.

  • *ptr = 42 âžœ Menyimpan nilai 42 di memori yang dialokasikan.

  • free(ptr) âžœ Membebaskan memori setelah selesai digunakan.

2. Mengalokasikan memori untuk array dinamis

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr;
    int n = 5;

    // Alokasi memori untuk array dengan 5 elemen
    arr = (int*) malloc(n * sizeof(int));

    if (arr == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    // Mengisi array
    for (int i = 0; i < n; i++) {
        arr[i] = i * 2;
    }

    // Menampilkan array
    printf("Array yang dialokasikan: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);  // Membebaskan memori
    return 0;
}

Hasilnya:

Array yang dialokasikan: 0 2 4 6 8
  • malloc(n * sizeof(int)) âžœ Mengalokasikan 5 x 4 byte = 20 byte untuk array integer.

  • Mengisi array dengan nilai i * 2.

  • Menampilkan isi array.

  • free(arr) âžœ Membebaskan memori setelah digunakan.

3. Mengalokasikan memori untuk string

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char *str;

    // Alokasi memori untuk 20 karakter
    str = (char*) malloc(20 * sizeof(char));

    if (str == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    strcpy(str, "Hello, malloc!");
    printf("String: %s\n", str);

    free(str);  // Bebaskan memori
    return 0;
}

Hasilnya:

String: Hello, malloc!
  • malloc(20 * sizeof(char)) âžœ Mengalokasikan 20 byte untuk string.

  • strcpy(str, "Hello, malloc!") âžœ Menyalin string ke memori yang dialokasikan.

  • free(str) âžœ Membebaskan memori setelah digunakan.

Last updated