elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con el uso de malloc
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con el uso de malloc  (Leído 4,043 veces)
alexis33de

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Ayuda con el uso de malloc
« 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


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda con el uso de malloc
« Respuesta #1 en: 19 Agosto 2010, 21:09 pm »

a)

Para asignar espacio a un puntero a int, la sintaxis debe ser:

Código
  1. signed int *p = malloc(sizeof(int) * 10);

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 = malloc(...)

x apunta al primer elemento del array.

malloc() devuelve un puntero que apunta al espacio asignado, es por eso que debes trabajar con punteros.


« Última modificación: 19 Agosto 2010, 21:12 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
alexis33de

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Ayuda con el uso de malloc
« Respuesta #2 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).
 ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Malloc y array ??
Programación C/C++
<<<-Basura->>> 2 3,413 Último mensaje 4 Octubre 2011, 15:19 pm
por LearningSpanishProgrammer
Ayuda con el uso de malloc en char (C) « 1 2 »
Programación C/C++
m4rkk0s 15 7,592 Último mensaje 3 Julio 2012, 14:42 pm
por DickGumshoe
¿Duda sobre malloc en C?
Programación C/C++
D4P50N 2 2,302 Último mensaje 20 Noviembre 2012, 00:15 am
por D4P50N
Duda, problema de asignacion con Malloc
Programación C/C++
Fabi0lo 6 3,164 Último mensaje 25 Noviembre 2012, 18:31 pm
por 0xDani
Ayuda - Punteros-malloc-
Programación C/C++
ma5acre.14 0 1,546 Último mensaje 16 Marzo 2019, 01:05 am
por ma5acre.14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines