Условно можно разделить код на две части: реализация объединения строк, и та часть которая будет ими пользоваться (клиент)
Так вот, если ты не стесняешься, то можно написать освобождение выделенной памяти со стороны клиента (для malloc будет вызов free). Но по хорошему надо делать процедуру обёртку, которая принимает указатель на твою строку и сама всё почистит