[C con Clase] Uso de malloc y free

marcelinux marcelinator en gmail.com
Dom Nov 15 20:33:18 CET 2015


Hola. Tengo una duda con el uso de free.
Tengo dos aplicaciones que hacen lo mismo excepto por la forma de almacenar el contenido en un array.
Si uso strcpy, free me libera sin problemas.
Sin embargo, si uso una función "propia", me produce una "Violación de segmento".
¿Qué me falta?

Estas son las dos versiones del programa. La versión 2 es la del error.

<code>/* Uso de malloc y liberación con free */
/* Versión 1. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char *cadenaA = (char *)malloc(80 * sizeof(char));
	char *cadenaB = (char *)malloc(80 * sizeof(char));
	strcpy(cadenaA, "Contenido de A");
	strcpy(cadenaB, "Contenido de B");
	printf("\nCadena A: %s", cadenaA);
	printf("\nCadena B: %s\n", cadenaB);
	free(cadenaA);
	free(cadenaB);
	cadenaA=NULL;
	cadenaB=NULL;
}

/* Uso de malloc y liberación con free */
/* Versión 2. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *manejo(char *param);

int main()
{
	char *cadenaA = (char *)malloc(80 * sizeof(char));
	char *cadenaB = (char *)malloc(80 * sizeof(char));
	cadenaA = manejo("Contenido de A");
	printf("\nCadena A: %s", cadenaA);
	cadenaB = manejo("Contenido de B");
	printf("\nCadena B: %s\n", cadenaB);
	free(cadenaA);
	free(cadenaB);
	cadenaA=NULL;
	cadenaB=NULL;
}

char *manejo(char *param)
{
	return param;
}
</code>

Sólo necesito aprender un poquito más. Gracias por tu ayuda.


Más información sobre la lista de distribución Cconclase