single malloc again, proper free