free()が必要なのはalloc系の関数で明示的にメモリ割り当てを行った
時だけ必要、とおぼえておけばいいでしょ。

stackかheapかは厳密には断定できないはず。