ブロックスコープでのstaticキーワードとmallocを使用する場合の利点は何ですか?
例えば:
機能A:
f() {
static int x = 7;
}
機能B:
f() {
int *x = malloc(sizeof(int));
if (x != NULL)
*x = 7;
}
これを正しく理解していれば、両方のプログラムが整数7を作成し、ヒープに格納されます。Aでは、変数は、mainメソッドが実行される前に、永続ストレージの最初に作成されます。Bでは、関数が呼び出されたらその場でメモリを割り当て、そのポインタが指す7を格納します。どのような状況で、ある方法を他の方法よりも使用する可能性がありますか?関数Aでxを解放できないことは知っているので、一般的にBの方が好ましいのではないでしょうか。