| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
raul_denia
Registrado: 27 Jun 2007 Mensajes: 6
| Publicado: 22/10/2007 12:06 am | | | Título: ¿usar delete para liberar memoria reservada con malloc? |
| Hola.
Resulta que tengo que depurar un código de otra persona y he observado que siempre que reserva memoria para estructuras propias, vectores, etc, lo realiza con malloc(), pero luego para liberarla lo realiza con delete().
¿Existe algún problema por utilizar el delete para liberar la memoria reservada por malloc, o seria mejor utilizar el free()?
Gracias |
|
| Volver arriba | |
 |
mamntc02
Registrado: 30 Abr 2007 Mensajes: 248
| Publicado: 22/10/2007 1:00 am | | | Título: |
| Hola,
Sí q existe problema. Para librerar lo reservado con malloc ó calloc (o realloc) siempre se usar free(). Igualmente para liberar lo reservado con new (ó new []) siempre usar delete (o delete[]).
Saludos. |
|
| Volver arriba | |
 |
guimel
Registrado: 17 Oct 2007 Mensajes: 16
| Publicado: 22/10/2007 8:48 am | | | Título: |
| Nunca se deben combinar malloc con delete ni new con free.
Para empezar, new y delete no solo reclaman o liberan un bloque de memoria, sino que además, invocan respectivamente al constructor y destructor del objeto al que se aplican.
Pero además, en ninguna parte se dicta que la implementación de new y delete tenga que ser compatible con la de malloc y free, con lo cual el resultado de hacer un malloc y liberarlo con free no está determinada. Indetereminado significa que puede funcionar 1000 veces, y fallar la 1001 (posíblemente delante del jefe/cliente/profesor).  _________________ Las ciencias de la computación están tan poco relacionadas con las computadoras como la astronomía con los telescopios
Edsger Dijkstra |
|
| Volver arriba | |
 |
|
|