fbpx

Struktur Data : Alokasi Memori Dinamis – realloc()

๐Ÿ“‹ 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.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!