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 nilai42
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