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

Uso de Sizeof en reserva de memoria

Estas en el tema de Uso de Sizeof en reserva de memoria en el foro de C/C++ en Foros del Web. Hola!! Tengo una duda que seguro que alguien puede resolver: Existe alguna diferencia entre utilizar malloc o free? a parte de que malloc devuelve un ...
  #1 (permalink)  
Antiguo 28/09/2011, 02:25
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 0
Uso de Sizeof en reserva de memoria

Hola!!

Tengo una duda que seguro que alguien puede resolver:

Existe alguna diferencia entre utilizar malloc o free? a parte de que malloc devuelve un puntero void!

Y otra pregunta:

Código:
double *y = new double[800] ;
Es igual que :

Código:
double *y = (double*) malloc(sizeof(800));
o también habría que utilizar sizeof ?

Gracias!
  #2 (permalink)  
Antiguo 28/09/2011, 07:39
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Uso de Sizeof en reserva de memoria

Si estas programando en C++ usa new y olvidate de malloc. new es mas inteligente. Se da cuenta del objeto que estas creando como ademas llama al contructor del objeto (los tipos basicos no tiene, pero si creas una clase si).

Tu uso del malloc esta mal si lo que quieres reservar es espacio para 800 double.:

double *y = (double*) malloc(sizeof(800));

Deberia ser:

double *y = (double*) malloc(800 * sizeof(doble));

A malloc se le pasa la cantida de byte que se quieren reservar. Por eso se hace la cuenta de cuanto ocupa un double y se lo multiplica por la cantidad. Despues se castea para que el compilador sepa como utilizar la memoria.

Saludos
  #3 (permalink)  
Antiguo 28/09/2011, 07:40
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Uso de Sizeof en reserva de memoria

en tipos basicos no deberia haber mayor diferencia, entre malloc-free vs new-delete. La diferencia la haran si intentas pedir memoria para un objeto de alguna clase, pues el new pedira memoria y se invocará automaticamente el constructor, con malloc solo se pide memoria.

Etiquetas: c++, malloc, sizeof
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 00:40.