[C con Clase] ¿Es esto correcto?

Davidson, Steven srd4121 en njit.edu
Vie Ago 16 19:14:10 CEST 2013


Hola Luis,

2013/8/16 Luis Belmonte <luispool1312 en hotmail.com>

> Ok, tienes razón lo hace sin problemas. Entonces tendría que usar una
> variable apuntador local en caso de que tuviese que acceder a algún campo
> interno de la


En tu caso, sí. Esto es porque 'Bombo' realmente es 'void *'. Por lo tanto,
no podemos acceder a la variable apuntada, porque desconocemos su tipo de
dato. Por esto, aplicamos un cásting a un puntero de un tipo conocido. Por
ejemplo,

((BomboAp)b)->v

Esto puede ser algo difícil de leer, especialmente si vas a acceder a la
variable apuntada, por lo que podemos crear un puntero local y auxiliar:

BomboAp bap = (BomboAp) b;
bap->v;
...

variable? Es que en los apuntes de la universidad hay en varios códigos de
> ejemplo en el que utiliza apuntadores para liberar memoria. Ejemplo:
>
>
Sólo podemos liberar la memoria explícitamente que previamente creamos
explícitamente. Cuando creamos memoria dinámicamente - y por tanto
explícitamente - con 'malloc()' (o con 2 otras funciones estándares),
obtenemos una dirección de memoria al comienzo de ese bloque de memoria
contigua; o 'NULL', si no se pudo llevar a cabo nuestra petición. A la hora
de liberar esta memoria con 'free()', pasamos la dirección de memoria que
previamente obtuvimos.

La palabra clave aquí es "explícitamente". Si se trata de variables creadas
implícitamente, el compilador es quien gestiona sus creación y destrucción,
como ocurrir con todas las variables que definimos:

int num;
float fPrecio;
char szMensaje[] = "hola a todos";
...

La regla general es que por cada 'malloc()' (u otra función similar) que
escribamos, debemos colocar su complemento: 'free()'.


Espero que esto aclare la duda.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130816/94c2715e/attachment.html>


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