elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:54  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Dudas con malloc...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas con malloc...  (Leído 247 veces)
Metal-byte

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Dudas con malloc...
« en: 30 Diciembre 2011, 20:57 »

Buenas.
Últimamente he hecho algunos programa con utilizando punteros, y me ha surgido una duda con la implementación de la función malloc.

El tema, es que he visto que en algunos programas implementan malloc de estas formas:

Código:
int *p;

//Implementación 1
p = (int *)malloc(sizeof (int));

//Implementación 2
p = malloc(sizeof (int));

Por ahora he probado ambas formas, y me funcionan de igual manera... me han dicho que cuando incluyo el (int *) es una especie de casteo para la asignación de memoria, pero como he dicho anteriormente, me ha funcionado con o sin esto...

Para que sirve realmente?
Que consecuencias podría traer el usar una u otra?

Eso, saludos.


En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Dudas con malloc...
« Respuesta #1 en: 30 Diciembre 2011, 21:55 »

Esas conversiones explicitas dependen del lenguaje utilizado (C o C++).

En el caso de C++ son obligatorias ya que lo requiere el lenguaje: un puntero de tipo "void *" como el retornado por malloc deben convertirse explícitamente al tipo apropiado. En este lenguaje se recomienda el uso de new + delete (ya que con ellos se llama a los constructores/destructores de los objetos, algo que no pasa con malloc).

En el caso de C no son necesarias y no se recomiendan ya que un "void *" puede almacenarse en una variable de tipo "T *" (donde "T" puede ser cualquier tipo).

En C el idioma o convención informal para una llamada a malloc es:
Código
int *p;
 
/* ... */
 
p = malloc(N * sizeof *p);
Donde "N" es el numero de elementos y se utiliza "sizeof *p" para no tener que indicar el tipo (asi se puede cambiar el tipo de "p" a, por ejemplo, "long *" y la llamada a malloc no tiene que cambiarse).

Un saludo


En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Metal-byte

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: Dudas con malloc...
« Respuesta #2 en: 1 Enero 2012, 16:15 »

Ahhh ok. Estoy trabajando en C, debe ser por eso que me acepta ambas implementaciones.

Muchas gracias ^^
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] C: Dudas con un malloc(0);
Programación C/C++
^Winder^ 6 1,548 Último mensaje 16 Enero 2010, 14:06
por ^Winder^
Malloc ...
Programación C/C++
roser24 14 1,654 Último mensaje 5 Mayo 2010, 21:15
por Akai
Ayuda con el uso de malloc
Programación C/C++
alexis33de 2 1,485 Último mensaje 21 Agosto 2010, 23:18
por alexis33de
Malloc y array ??
Programación C/C++
<<<-Underwar->>> 2 954 Último mensaje 4 Octubre 2011, 15:19
por LearningSpanishProgrammer
Problemilla con punteros y malloc
Programación C/C++
totolia 2 247 Último mensaje 25 Marzo 2012, 01:02
por totolia
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines