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