Почему вы хотите «оптимизировать» код?
Вы рассчитывали?
Вы нашли это было слишком медленно?
Вы готовы примерить новые версии?
Понимаете ли вы, что время выполнения кода зависит от многих факторов (таких как текущая загрузка процессора, количество активных пользователей, активность диска, ..., ...)
Лучшая оптимизация, которую вы можете сделать, - это начать с очень большого значения для malloc (и, возможно, realloc вниз после того, как все данные будут прочитаны).
size_t inputMsgBuffLen = 400000000; /* approx 400 mega */