Respuesta: problema realloc Hoy en dia es lo mismo malloc (4) que malloc (sizeof(char) * 4). Porque en todos los compiladores el tamaño de un char es de un bytes. El problema esta si usas enteros u otros datos....
Volviendo al codigo tu problema esta en que nunca tomas el nuevo puntero que devuelve realloc. realloc te devuelve un puntero nuevo no modifica el que vos le pasas por argumento.
Asi deberia ser:
expresion = realloc (expresion, sizeof(char) * (tam_infijo (expresion) + 1) ); |