Foros del Web » Programación para mayores de 30 ;) » C/C++ »

malloc C++

Estas en el tema de malloc C++ en el foro de C/C++ en Foros del Web. Gente tenia un programa en c y lo tengo que pasar a c++. El problema es que cada vez que uso malloc me tira error ...
  #1 (permalink)  
Antiguo 26/09/2010, 12:13
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 18 años, 5 meses
Puntos: 0
malloc C++

Gente tenia un programa en c y lo tengo que pasar a c++.
El problema es que cada vez que uso malloc me tira error compilando con el g++.



UN EJEMPLO

struct sockaddr_in *local_address = malloc(sizeof(struct sockaddr_in));

Tienen idea como solucionar esto?
  #2 (permalink)  
Antiguo 26/09/2010, 12:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: malloc C++

el error que me tira es este.

invalid conversion from ‘void*’ to ‘sockaddr_in*’
  #3 (permalink)  
Antiguo 26/09/2010, 13:01
Avatar de SDEK  
Fecha de Ingreso: diciembre-2009
Ubicación: MX
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: malloc C++

Intentalo de esta manera:

Código C++:
Ver original
  1. (local_address) malloc(sizeof(local_address))

Saludos,
__________________
Tecnologías de la Información
Karel Priego
| @karelpriego
  #4 (permalink)  
Antiguo 26/09/2010, 13:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 79
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: malloc C++

Sisis eran problemas de casteo. Se ve que el c++ es mas rompepelotas con eso.

saludos
  #5 (permalink)  
Antiguo 26/09/2010, 14:33
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 17 años
Puntos: 3
Respuesta: malloc C++

Es que en c++ no se usa el malloc. En c++, utilizamos el new (para utilizar el monton (heap)):
Código:
sockaddr_in *local_address = new sockaddr_in();
o mejor, utilizamos la pila (stack):
Código:
sockaddr_in local_address;
La idea del malloc consiste en manipular directamente la memoria, en termino de bits reservados.
En C++, la idea es de no preocuparse de la memoria. Es decir que la capa objeto está supuesta encargarse ella de la memoria; y entonces la idea en C++ es de manejar bien la capa objeto, de manera que "abajo" todo se quede bien, sin preocuparse de este "abajo".
El malloc es tipicamente algo que g++ sigue conociendo por razones de compatibilidad, pero no entra en la "filosofia" del c++. En c++ hacemos un new, o mejor, creamos objetos en la pila (la capa objeto se encarga de reservar la memoria que se necesita, y lo magico del c++, es que está capa se encarga tambien de liberarla), es decir como cualquier variable (la idea es de manejar todos lo tipos que tienen semantica de valor igual que se maneja un tipo nativo).
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
  #6 (permalink)  
Antiguo 26/09/2010, 18:30
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: malloc C++

El new se utiliza para objetos, o tambien puede utilizarse para structuras?
  #7 (permalink)  
Antiguo 26/09/2010, 19:28
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: malloc C++

En C++ las estructuras son objetos tambien.
new se puede usar con structs tambien.
  #8 (permalink)  
Antiguo 27/09/2010, 04:35
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 17 años
Puntos: 3
Respuesta: malloc C++

En C++, la unica diferencia entre una estructura y una clase es la accesibilidad; (privado/publico) de los miembros. Osea, struct y class pueden ser considerados como la misma cosa.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web

Etiquetas: malloc
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.