私はforループを持つ関数を持っていて、ループの中で(そして入力に応じて)、ある変数はmalloc()
を使って(最初の)一度初期化されます。静的に動的に割り当てられたポインタをfree()する必要はありますか?
これらの変数は次のように宣言されています
static double *vector;
、その後、私は質問がある
malloc(size*sizeof(double));
を使用してメモリを割り当てる:
私はこれらの変数を解放する必要がありますか呼び出された関数の中のループの最後の反復かどうか?
更新:多分私は何人かの人に間違って説明したかもしれません。これは、呼び出される関数(func_A)は、main関数からの入力に応じて使用する特定のベクトルにメモリを割り当てます。そして、このfunc_Aはメインのループから数回呼び出されます。そのため、変数を静的変数と定義し、func_Aが呼び出されるたびに定義されないようにします(時間消費のために)。ディメンションは実行全体を通して変化しないためです。変数は静的ですがグローバルではないので、私はメインから解放することはできません(右?)。
答えは「依存します」です。プログラムを終了する前と最後に使用した後にメモリを解放する必要があります。 – DevSolar
もう不要になったら解放してください。 –
http://stackoverflow.com/questions/654754/what-really-happens-when-you-dont-free-after-malloc?rq=1 – jamesdlin