как добавить длину массива через параметр функции в C++

void getArray(int lenArray) {


    int arr[lenArray];
    // ошибка требует что значение длины было константой, а мне надо передать длину именно
    //из параметра lenArray
}

Ответы (1 шт):

Автор решения: Harry

Вариантов много.

int * arr = new int[lenArray];

Минус в том, что надо не забыть сделать delete[]arr;, иначе будет утечка памяти.

Если очень нужен именно массив в стеке? а тип при этом POD, можно прибегнуть к нестандарту в смысле С++, но имеющемуся по сути везде вызову alloca, который выделяет память в стеке, так что освобождать ее не надо:

int * arr = (int*)alloca(sizeof(int)*lenArray);

Ну и, наконец, самое логичное при использовании С++ решение — вектор (можно даже с инициализатором :)):

vector<int> arr(lenArray, initialValue);

, initialValue можно и опустить.

Стек особо не занимает, освобождать не надо... словом, можно просто использовать, и не думать об обслуживании.

→ Ссылка