Título: Ayuda con el uso de malloc Publicado por: alexis33de en 19 Agosto 2010, 20:46 pm Hola pues estaba viendo unas diapositivas sobre el uso de malloc alguien me podria decir xq estos 2 codigos de malloc son incorrectos?
a. { int x; &x = (int *) malloc(sizeof(int)); … } ///////////////////////////////////// b. { int x[3]; x = (int *) malloc(3*sizeof(int)); … } SALUDOS Título: Re: Ayuda con el uso de malloc Publicado por: leogtz en 19 Agosto 2010, 21:09 pm a)
Para asignar espacio a un puntero a int, la sintaxis debe ser: Código Asignas un bloque de memoria de (sizeof(int) * 10) bytes. El casting no es necesario. Tu haces &x, con & lo que obtienes es la dirección en memoria. b) Tu necesitas trabajar con punteros al usar la función malloc Al hacer Código: int x[N] x apunta al primer elemento del array. malloc() devuelve un puntero que apunta al espacio asignado, es por eso que debes trabajar con punteros. Título: Re: Ayuda con el uso de malloc Publicado por: alexis33de en 21 Agosto 2010, 23:18 pm Bien pues estuve investigando y esta es una forma mas clara de explicarlo , para lo q recien empiezan como yo. Aqui dejo una explicación para alguien q tenga el mismo problema en el futuro.
Es la forma en que asigna la memoria en ambos casos. En la primera a X se le asignó una localidad entera estática de memoria y aunque se llame a la dirección de X utilizando &X ya no se puede asignarle memoria de forma dinámica como lo hace en el caso a) En el caso b) la asignación de memoria es estática también. Al declarar un arreglo por ejemplo X[3] se le está asignando 3 localidades de memoria estática de tipo entero al arreglo y aunque se trate de asignarle memoria de forma dinámica ya no se puede porque ya la tiene asignada (en ambos casos). ;-) |