[C con Clase] Uso de malloc y free

metuskale metuskale en gmail.com
Dom Nov 15 21:19:21 CET 2015


El problema que veo es que no copias el contenido de "param" sino que
igualas el puntero de cadenaX sin pedir memoria para esta.

El 15 de noviembre de 2015, 20:33, marcelinux <marcelinator en gmail.com>
escribió:

> 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.
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Att.
David de Alvarado Lacruz
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20151115/ca515f09/attachment.html>


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