Saya menemukan sebuah kuis yang melibatkan deklarasi array dengan ukuran berbeda. Hal pertama yang terlintas di pikiran saya adalah bahwa saya perlu menggunakan alokasi dinamis dengan new
perintah, seperti ini:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Namun, saya melihat bahwa salah satu solusi memungkinkan kasus berikut:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Setelah sedikit riset, saya membaca bahwa g ++ memungkinkan ini, tetapi membuat saya berpikir, dalam hal apa kemudian diperlukan untuk menggunakan alokasi dinamis? Atau apakah kompiler menerjemahkan ini sebagai alokasi dinamis?
Fungsi hapus disertakan. Perhatikan, bagaimanapun, bahwa pertanyaan di sini bukan tentang kebocoran memori.
new OBJ
secara langsung.
std::vector
(std::vector<int> array(N);
).