時代遅れで使用すべきではないかなりの数の場所を読みましたが、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 の実際の有効な使い方ですか? また、この例では、何らかの理由で値をスタックに割り当てたいと仮定します