Мне удалось заставить это работать для "фиксированного" размера массива, т.е. длина может быть определена во время выполнения, а НЕ во время компиляции.Я создал функцию, которая имеет пустой указатель A
в качестве ввода, затем изменяет его внутри и также возвращает его.Длина len
- это произвольная длина времени выполнения:
char *malloc_char_array(char* &A, int len);
Затем вызовите эту функцию при инициализации массива:
static char *result = malloc_char_array(result, 50); //test length of 50
Статическая инициализация происходит только в первый раз, когда функциявызывается, поэтому он отлично работает для массивов, которые должны быть динамическими по размеру (т.е. не определены во время компиляции), но при этом оставаться фиксированными на протяжении всего запуска программы.
И функция выделения будет выглядеть как-тонапример:
char *malloc_char_array(char* &A, int len)
{
A = (char*) malloc(len * sizeof(char));
return A;
}
При использовании этого метода нет необходимости освобождать «статическую» выделенную память, просто оставьте ее в стеке до завершения работы программы.