我偶然发现了一个涉及不同大小的数组声明的测验。我首先想到的是我需要在new
命令中使用动态分配,如下所示:
while(T--) {
int N;
cin >> N;
int *array = new int[N];
// Do something with 'array'
delete[] array;
}
但是,我看到其中一种解决方案允许以下情况:
while(T--) {
int N;
cin >> N;
int array[N];
// Do something with 'array'
}
经过一番研究,我读到 g++ 允许这样做,但它让我一直在思考,在哪些情况下需要使用动态分配?还是编译器将其翻译为动态分配?
包括删除功能。但是请注意,这里的问题与内存泄漏无关。