Hola!!

Para entenderlo bien, lo suyo es que comprendas cómo funciona un puntero.

Básicamente, cuando tienes un puntero que apunta a una estructura, estás
guardando datos en dos sitios: por una parte, el puntero es una dirección
de memoria, que se guardará en el Heap; por otro, la estructura estará
almacenada en la posición de memoria, en el Stack.

Cuando igualas punteros, sólo estás haciendo que ambas variables apunten a
la misma posición de memoria. En este caso tenemos tres zonas de memoria:
el puntero inicial y el segundo, que se encontrarán en el Heap, y la propia
estructura, que estará en el Stack.

Cuando utilizas memcpy, lo que estás haciendo es realizar una copia de la
posición de memoria (el Stack) en otro sitio(también en el Stack). Ten
cuidado, porque memcpy no reservará esa memoria.

Si comprendes la diferencia entre el Heap y el Stack, todo es más sencillo.
Cuando haces:

   - int i;
   - void* pointer;

etc, estás reservando memoria en el Heap. Ésta es volátil y la suele
gestionar el propio compilador.

Cuando utilizas las funciones *alloc (Malloc, Alloc, Calloc, Strdup, ...)
estás usando el Stack, y eres tú el encargado de gestionar su liberación.

Por eso, cuando usas: "*p = *j", estás utilizando sólo el Heap. Cuando usas
"strcpy", estás leyendo y escribiendo en el Stack.

Pintándolo:
http://video.google.com/videoplay?docid=-3462836456663764635&q=Pointer+C
Diferencias entre el Heap y el Stack:
http://wiki.answers.com/Q/What_is_difference_between_heap_memory_and_stack_memory

Espero haberme explicado. Un saludo!!

El 22 de abril de 2012 17:43, Dani <[email protected]> escribió:

> ¡Buenas a todos!
>
> Pues simplemente quería preguntaros cual es la diferencia entre las
> siguientes sentencias, siendo variables definidas por una estructura g, en
> C:
>
> *p=*j;
> memcpy(p, j  , sizeof(struct q));
>
> Espero que alguien me pueda sacar de la duda.
> Gracias.
>
> _______________________________________________
> CRySoL mailing list
> http://crysol.org/
> https://arco.esi.uclm.es/cgi-bin/mailman/listinfo/crysol
>
>


-- 
Miguel Ángel García Martínez
http://www.magmax.org
Mail <[email protected]> | Twitter <http://twitter.com/#magmax9>
 | LinkedIn <http://www.linkedin.com/in/miguelangelgarciamartinez> |
about.me <http://about.me/miguelangelgarcia>
_______________________________________________
CRySoL mailing list
http://crysol.org/
https://arco.esi.uclm.es/cgi-bin/mailman/listinfo/crysol

Responder a