C++ Array Heap Or Stack

4 min read Jul 05, 2024
C++ Array Heap Or Stack

C++ Arrays: Heap vs Stack

Dalam pemrograman C++, array adalah struktur data dasar yang digunakan untuk menyimpan kumpulan elemen dari tipe data yang sama. Array dialokasikan dalam memori dan ada dua tempat utama di mana array dapat dialokasikan: stack dan heap.

Stack

  • Stack adalah area memori yang dikelola secara otomatis oleh compiler. Ketika fungsi dipanggil, ruang untuk variabel lokal dan parameternya dialokasikan di stack. Ketika fungsi selesai, ruang yang dialokasikan di stack dibebaskan.
  • Keuntungan:
    • Alokasi dan dealokasi memori sangat cepat, karena dilakukan oleh compiler.
    • Prosesnya mudah diikuti dan tidak memerlukan kode tambahan.
  • Kekurangan:
    • Ukuran array pada stack dibatasi. Jika array terlalu besar, stack overflow dapat terjadi.
    • Array yang dialokasikan di stack hanya dapat diakses dari dalam fungsi yang mengalokasikannya.
    • Tidak fleksibel, karena ukuran array harus ditentukan pada saat kompilasi.

Heap

  • Heap adalah area memori yang dikelola secara manual oleh programmer. Memori dapat dialokasikan dan dibebaskan secara eksplisit dengan menggunakan operator new dan delete di C++.
  • Keuntungan:
    • Array yang dialokasikan di heap dapat berukuran seperlunya.
    • Array yang dialokasikan di heap dapat diakses dari mana saja dalam program.
    • Lebih fleksibel karena ukurannya dapat ditentukan pada saat runtime.
  • Kekurangan:
    • Alokasi dan dealokasi memori di heap lebih lambat dari stack.
    • Programmer harus mengelola memori secara manual, yang dapat menyebabkan kebocoran memori jika tidak dilakukan dengan benar.
    • Lebih rumit untuk dipahami dan diimplementasikan.

Contoh

#include 

int main() {
  // Array di stack
  int stackArray[5] = {1, 2, 3, 4, 5};

  // Array di heap
  int *heapArray = new int[5];
  for (int i = 0; i < 5; i++) {
    heapArray[i] = i + 1;
  }

  // Mencetak nilai array di stack
  std::cout << "Array di stack: ";
  for (int i = 0; i < 5; i++) {
    std::cout << stackArray[i] << " ";
  }

  // Mencetak nilai array di heap
  std::cout << "\nArray di heap: ";
  for (int i = 0; i < 5; i++) {
    std::cout << heapArray[i] << " ";
  }

  // Menghapus alokasi memori di heap
  delete[] heapArray;

  return 0;
}

Kapan Menggunakan Heap dan Kapan Menggunakan Stack?

  • Gunakan stack:
    • Untuk array yang berukuran kecil dan hanya digunakan dalam fungsi tertentu.
    • Untuk array yang tidak perlu diakses dari luar fungsi tempatnya dialokasikan.
  • Gunakan heap:
    • Untuk array yang berukuran besar atau variabel.
    • Untuk array yang perlu diakses dari banyak fungsi.
    • Jika ukuran array tidak diketahui sampai saat runtime.

Kesimpulan

Pemahaman tentang alokasi memori di stack dan heap sangat penting untuk pemrograman C++. Memilih lokasi yang tepat untuk mengalokasikan array dapat mempengaruhi kinerja program dan meningkatkan pengelolaan memori.

Featured Posts