Jedesmal den Bereich um ein Byte zu vergrößern ist Unsinn. Bei sowas fängt mal normalerweise mit x Byte an. Was man halt ungefähr erwartet. Dann vergrößert man jedesmal um z.B 20 oder 50 Byte wenn der Speicher voll ist. Das hängt von der Anwendung ab. Man muss halt einen Kompromiss finden zwischen Gesamt-Verbrauch und der Anzahl der Speicher-Resevierungen.
Wobei das bei realloc() auch nicht so gravierend ist. Idealerweise wird wirklich einfach der Speicherbereich erweitert und nichts umkopiert. Es schadet aber trotzdem nichts die Aufrufe etwas zu minimieren.