Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/01/2014, 11:59
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Punteros y cadena.

Saludos guzzano, buena observacion; la opcion del 0 final lo puse con el proposito de reutilizar la funcion: por defecto en datos bajados de red (aun en texto plano) no quiero el 0 final, pero para cualquier otro tipo de operacion si. Es lo que tienes en tu codigo:

Código C:
Ver original
  1. /* +1 = null byte */
  2. *buff = malloc((new_size + 1));

Para el proyecto no nos interesa que siempre termine en 0.

Lo de rellenar la variable completa de 0 lo puse y ahi se quedo (solo está en el malloc), tengo que quitarlo ya que no tiene sentido.

Y una observacion:

Código C:
Ver original
  1. *buff = realloc(*buff, block_size + new_size);
  2. if (!*(buff))
  3.     return NOT_MEMORY;

No apliques el realloc sobre la variable final, en caso de error obtienes una perdida de memoria (memory leak); usa un temporal para la asignacion:

Código C:
Ver original
  1. char *tmp;
  2. if(!(tmp = realloc(*buff, block_size + new_size))) {
  3.     return NOT_MEMORY;
  4. }
  5. *buff = tmp;
  6. memcpy(*buff...

Saludos
vosk