Неконстантное объявление массива

Я сам учился программированию пару лет и был уверен, что если вам нужно объявление массива номера переменной, вам нужно использовать malloc или new .

Сегодня я обнаружил, что это компилируется под g ++ версии 4.4.4 без предупреждений и ошибок:

#include <iostream>
using namespace std;

int main()
{
    int size_array;
    cin >> size_array;
    int iTable[size_array];

    for(int i=0;i < size_array;i++)
        iTable[i]=i*i;
    for(int i=0;i < size_array;i++)
        cout << iTable[i] << endl;

    return 0;
}

Также он отлично компилируется, если вы используете gcc (после изменения cout и cin на printf и scanf )

В Visual Studio этот код не компилируется, поскольку size_array не является постоянным.

Когда это было изменено? Это безопасный метод?

7
задан Null 7 October 2015 в 14:51
поделиться