๐ Daftar Isi
realloc atau dapat juga disebutkan dengan “re-allocation” digunakan untuk mengubah ukuran memori yang dialokasikan fungsi malloc dan calloc. Penjelasan mengenai fungsi malloc dan calloc dapat dilihat pada artikel sebelumnya.
Jika memory yang sebelumnya dialokasikan tidak cukup/berlebih, realloc dapat digunakan untuk merealokas memory secara dinamis. Apabila berhasil, realloc akan melakukan realokasi memory. Sebaliknya, akan return sebuah pointer NULL.
Deklarasi
ptr = realloc(ptr, ukuran_baru)
Dimana ptr adalah pointer dari return fungsi malloc atau calloc
Contoh:
ptr = realloc(ptr, 10 * sizeof(int));
Alokasi memory ptr dari malloc atau calloc akan diubah menjadi 40 byte (karena sizeof(int) = 4 byte sehingga 10 * 4 byte = 40 byte)
Contoh 1
Misalkan kita mempunyai pointer ptr hasil dari mengalokasikan memory menggunakan malloc sebesar 5 * 4 byte = 20 byte.
Ternyata alokasi tidak cukup, maka perlu realokasi memory (dalam hal ini menambahkan) secara dinamis. Kita ubah alokasi memory ptr dari 20 byte menjadi 10 * 4 byte = 40 byte.
Contoh 2
#incluede <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr;
int i, n = 5;
ptr = (int*)calloc(n, sizeof(int));
if (ptr == NULL)
{
printf("Out of memory \n");
exit(0);
}
else
{
printf("Alokasi memory sukses\n);
for (i = 0; i < n; ++i)
{
ptr[i] = i + 1;
}
printf("Elemen array adalah: ");
for (i = 0; i < n; ++i}
{
printf("%d", ptr[i]);
}
n = 10;
ptr = realloc(ptr, n * sizeof(int));
printf("\nRealokasi memory berhasil\n");
for (i = 4; i < n; ++i)
{
ptr[i] = i + 1;
}
printf("Elemen array adalah: ");
for (i = 0; i < n; ++i)
{
printf("%d", ptr[i]);
}
free(ptr);
}
return 0;
}
Output
Alokasi memory sukses
Elemen array adalah: 1, 2, 3, 4, 5,
Realokasi memory berhasil
Elemen array adalah: 1, 2, 3, 4, 5, 6, 7, 8, 9,
Contoh 3
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str;
/* Inisialisasi alokasi memori */
str = (char*)malloc(15);
strcpy(str, "belajar");
printf("String = %s\n", str);
/* Re-alokasi memori */
str = (char*)realloc(str, 35);
strcat(str, "statistik.com");
printf("String = %s\n", str);
free(str);
return(0);
}
Keterangan:
strcpy (var_dest, var_source):
mengcopy string var_source ke var_dest
strcat(var_dest, var_source):
menambahkan var_source di akhir var_dest
Output:
String = belajar
String = belajarstatistik.com
Materi Lengkap
Silakan baca juga beberapa artikel menarik kami tentang Struktur dan Pointer, daftar lengkapnya adalah sebagai berikut.