Caveat in C: free-ing list elements