¿El siguiente código C++ es una pérdida de memoria?C++: ¿push_back (new Object()) es una pérdida de memoria?
list.push_back(new String("hi"));
Según tengo entendido, push_back desde cualquier std collection/container siempre hace una copia. Entonces, si se copia la nueva cadena, nada puede borrar la cadena nueva, ¿verdad? ya que no hay referencia después del push_back ...
¿Estoy correcto o incorrecto aquí?
Gracias.
JBU
edición: creo que estoy equivocado, ya que los nuevos devolverá un puntero ... siempre nos quedará el puntero para ser capaz de eliminar la nueva cadena
Depende de la definición de 'list'. –
Depende de qué 'lista' es. Suponiendo que es una 'std :: list', @UncleBens es correcta: aún así es posible limpiarla correctamente la mayor parte del tiempo. Pero debes hacer esa limpieza manualmente; 'std :: list' no lo hará por usted. –
aschepler
Sí. Porque la variable 'lista' es en realidad de un tipo que tiene una función llamada 'push_back' con un cuerpo vacío. –