Я знаю, что int* array = new int [n];
выделяет пространство памяти в куче.Объявление динамического массива разными способами
Но если я объявляю что-то вроде этого: int array[n];
в кодовых блокирах, он скомпилируется успешно, но если я переведу его в визуальную студию, это выходит из-за ошибки.
То, что я хочу спросить:
Что
int[n]
действительно делать и как она соотносится с выделением кучи? В чем разница между ними?Какая ошибка может возникнуть, если я использую
int array[n]
вместоint* array = new int [n];
?
Переменная длина не должна использоваться для массивов статического размера. Codeblocks принимает это, потому что GCC, вероятно, поддерживает его как extenstion. – 0x499602D2
Взято из документов GCC: 'Автоматические массивы переменной длины разрешены в ISO C99, а в качестве расширения GCC принимает их в режиме C90 и на C++.' – chris