Memori Dinamis dengan 'new'
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 6 dari 56.
Sejauh ini, kamu telah menggunakan pointer yang menunjuk ke variabel yang sudah dibuat dalam programmu. Namun, bagaimana jika kamu perlu membuat variabel saat programmu sedang berjalan? Di sinilah alokasi memori dinamis dengan kata kunci new menjadi penting.
Kata kunci new memungkinkan kamu mengalokasikan memori untuk sebuah variabel di heap selama program dijalankan. Tidak seperti variabel biasa yang dibuat di stack, memori yang dialokasikan secara dinamis tetap ada sampai kamu membebaskannya secara eksplisit.
int* ptr = new int; // Mengalokasikan memori untuk sebuah bilangan bulat
*ptr = 42; // Memberikan nilai ke memori yang dialokasikanDalam contoh ini, new int mengalokasikan memori yang cukup untuk menyimpan sebuah bilangan bulat dan mengembalikan pointer ke lokasi memori tersebut. Kamu kemudian dapat menggunakan operator dereferensi untuk menetapkan nilai dan mengakses variabel yang dialokasikan secara dinamis, sama seperti pointer lainnya.
Alokasi memori dinamis sangat berguna ketika kamu belum tahu berapa banyak memori yang akan kamu perlukan hingga program berjalan, atau ketika kamu perlu agar variabel tetap ada di luar cakupan tempat variabel itu dibuat. Fleksibilitas ini menjadikan new alat yang ampuh untuk membangun program yang lebih kompleks.
Tantangan
MudahBuat program yang mendemonstrasikan alokasi memori dinamis menggunakan kata kunci new untuk mengalokasikan memori bagi sebuah variabel selama program dijalankan.
Input berikut akan diberikan:
- Nilai bilangan bulat untuk disimpan dalam memori yang dialokasikan secara dinamis
Programmu harus:
- Menggunakan kata kunci
newuntuk mengalokasikan memori secara dinamis bagi sebuah bilangan bulat - Menyimpan pointer yang dikembalikan oleh
newdalam variabel pointer bernamanumPtr - Menggunakan operator dereferensi untuk menetapkan nilai input ke memori yang dialokasikan secara dinamis
- Mencetak nilai yang tersimpan dalam memori yang dialokasikan secara dinamis dengan melakukan dereferensi pointer
- Mencetak alamat memori yang tersimpan dalam pointer
Gunakan format output persis seperti berikut:
Value: [value]
Address: [memory address]Alamat memori akan ditampilkan dalam format heksadesimal, yaitu format yang digunakan C++ untuk menampilkan alamat memori dari memori yang dialokasikan secara dinamis.
Coba sendiri
#include <iostream>
using namespace std;
int main() {
// Baca input
int value;
cin >> value;
// TODO: Tulis kodemu di bawah ini
// Gunakan 'new' untuk mengalokasikan memori secara dinamis bagi sebuah bilangan bulat
// Simpan pointer dalam variabel bernama 'numPtr'
// Tetapkan nilai input ke memori yang dialokasikan secara dinamis
// Tampilkan hasilnya
cout << "Value: " << /* Akses nilai yang ditunjuk numPtr di sini */ << endl;
cout << "Address: " << /* Tampilkan alamat yang disimpan dalam numPtr */ << endl;
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online