Я читал довольно много мест, где alloca
устарел и не должен использоваться, и вместо этого следует использовать массивы переменной длины.
Мой вопрос таков: можно ли полностью заменить alloca
массивами переменной длины?
В моем конкретном случае у меня есть что-то вроде этого:
typedef struct {
int *value;
size_t size;
} some_type;
void SomeExternalFunction(some_type);
...
void foo(){
//What I thought to do
some_type bar;
bar.value=alloca(sizeof(int)*10);
SomeExternalFunction(bar);
//what should be done without alloca
some_type fizz;
int tmp[10];
fizz.value=tmp;
SoemExternalFunction(fizz);
}
Я что-то упустил или это действительно хорошее использование alloca? Также предположим для этого примера, что по какой-то причине я хочу, чтобы значение было выделено в стеке