我偶然发现了一个涉及大小不同的数组声明的测验。我想到的第一件事是,我需要在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 ++允许这样做,但是这让我一直思考,那么在什么情况下有必要使用动态分配?还是编译器将此转换为动态分配?
包括删除功能。但是请注意,这里的问题与内存泄漏无关。
new OBJ
直接调用对象来分配对象。
std::vector
改用(std::vector<int> array(N);
)。