Hice una función parecida a la tuya, no crees que es meter siempre el espacio del byte nulo. Así cuando se guarde una cadena, agrega al final el 0, y si se tiene que agregar otra, lo remplaza y vuelve a meter el byte nulo al final. Sé que lo agregas sobre todo para trabajar con textos, pero recuerda que muchas funciones usan el 0 para terminar la búsqueda. Así no rellenas la variable completa de 0.
Código C:
Ver originalint block_mem(char **buff, char *block, size_t block_size,
size_t new_size)
{
if (!(*buff))
{
/* +1 = null byte */
*buff
= malloc((new_size
+ 1));
if (!(*buff))
return NOT_MEMORY;
}
else
{
*buff
= realloc(*buff
, block_size
+ new_size
);
if (!*(buff))
return NOT_MEMORY;
}
memcpy(*buff
+ block_size
, block
, new_size
); *(*buff + block_size + new_size) = '\0';
return new_size;
}