Farklı boyutlarda dizi bildirimi içeren bir sınav tökezledi. Aklıma gelen ilk şey şu newkomutla dinamik ayırma kullanmanız gerekecekti , şöyle:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
Ancak, çözümlerden birinin aşağıdaki duruma izin verdiğini gördüm:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
Biraz araştırma yaptıktan sonra g ++ 'nın buna izin verdiğini okudum, ancak beni düşünmeye devam etti, hangi durumlarda dinamik ayırma kullanmak gerekli? Yoksa derleyici bunu dinamik ayırma olarak mı çeviriyor?
Silme işlevi dahildir. Bununla birlikte, buradaki sorunun bellek sızıntıları ile ilgili olmadığını unutmayın.
new OBJdoğrudan çağırarak nesneleri ayırmak hala yaygın bir uygulamadır .
std::vectorbunun yerine (std::vector<int> array(N);) kullanın .