ANSI C でのメモリ割り当てと解放について理解を深めようとしています。問題は、メモリ割り当てを解放するタイミングがわからないことです。
1)プログラムの終了は、割り当てられたメモリ自体を解放しますか(私がそうしなかったとしてもfree()
)?
2)私のコードが次のようなものだとしましょう:(現時点では、これらの構造体の完全なコードについて心配しないでください。私はロジックのみを求めています)
snode = (stock_node *) realloc(snode, count * sizeof(stock_node));
struct stock_list slist = { snode, count };
stock_list_ptr slist_ptr = (stock_list_ptr) malloc(sizeof(stock_list_ptr));
slist_ptr = &slist;
tm->stock = slist_ptr;
以上です。snode は stock_list に移動し、stock_list は slist ポインターに移動し、tm->stock に移動します。
最後に tm->stock にすべて割り当てたので、snode と slist_ptr を解放する必要がありますか? tm struct はプログラムの残りの部分で使用されるためです。snode と slist_ptr を解放すると、tm struct は値を失いますか?