我偶然发现了一个涉及不同大小的数组声明的测验。我想到的第一件事是,我需要使用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++允许这样做,但这让我想了一下,在哪些情况下需要使用动态分配呢?还是说编译器将其转换为动态分配呢?
delete函数已经包括在内。请注意,这里的问题不是关于内存泄漏的。
std::vector
(std::vector<int> array(N);
)。 - Some programmer dude