1

大規模な構造を含むグローバル変数があるとします。

typedef struct {
    char Big[1024]
} LARGE;

static LARGE x;

void main()
{
     free(x);
}

free(x) が不要になったときに main から安全に呼び出すことはできますか?

4

2 に答える 2

8

いいえ。動的に割り当てxていないので、解放する必要はありません (解放することもできません)。

プログラムが終了する前に絶対にメモリを解放する必要がある場合は、ポインターをグローバルとして宣言し、必要に応じてmallocまたはを使用して割り当て、構造体の操作が終了したときにcallocそれを割り当てます。free

static LARGE* x;

void main()
{
    x = malloc(sizeof(*x));
    // use x
    free(x);
}
于 2013-01-20T21:14:22.897 に答える
4

いいえ、freeへの呼び出しによって割り当てられたオブジェクトの割り当てを解除するためにのみ使用できますmalloc

静的ストレージ期間を持つオブジェクトは、プログラムの終了時にのみ割り当てを解除できます。

于 2013-01-20T21:15:23.740 に答える