私はこの質問が以前に尋ねられたことを保証しますが、検索でそれを見つけることができませんでした。冗長性については事前に申し訳ありません。
コンパイル時にオブジェクトのサイズがわかっている場合にのみスタックに割り当てるというのは、私の(潜在的に間違っている)理解です。したがって、配列を初期化する場合は、次のいずれかを実行できます(これはスタックに配置する必要があります)。
char charArray[50];
この配列のサイズはコンパイル時にわかっているので、問題はありません。
一方、これ(私は信じています)も有効なコードです:
char anotherCharArray[someVariable + 50];
これもスタックに入れられますか?これをfree()すると、コードがsegfaultsになると確信しているので、そう思われるかもしれませんが、私にはあまり意味がありません。同様に、データがmallocを介して割り当てられたときにfree()を使用する必要がある100%唯一の状況ですか?
よろしくお願いします。