eliminar vs eliminar

Posible duplicado:
(POD) liberar memoria: ¿es eliminar [] igual a eliminar?

Cuando me enseñaron C ++, esto fue hace mucho tiempo. Me dijeron que nunca use delete pero delete[] como realizar delete[] en un solo objeto será equivalente a delete . Sabiendo que no confío demasiado en los profesores, me pregunto: ¿es esto cierto?

¿Hay alguna razón para llamar delete lugar de delete[] ?

He escaneado las preguntas posiblemente relacionadas en SO, pero no he encontrado ninguna respuesta clara.

Del estándar (5.3.5 / 2):

En la primera alternativa (eliminar objeto), el valor del operando de eliminación debe ser un puntero a un objeto que no sea de matriz o un puntero a un subobjeto (1.8) que represente una clase base de dicho objeto (cláusula 10). Si no, el comportamiento no está definido.

En la segunda alternativa (eliminar matriz), el valor del operando de eliminación será el valor del puntero que resultó de una nueva expresión de matriz anterior. Si no, el comportamiento no está definido.

Entonces no: ¡no son de ninguna manera equivalentes!

delete [] es “vector delete” y corresponde a vector new, es decir, new[] .

Debe usar el par de asignadores correspondiente. Por ejemplo, malloc/free , new/delete , new[]/delete[] , de lo contrario obtendrá un comportamiento indefinido.

¡No! llama a delete[] cuando asigna con new[] , de lo contrario, llama a delete .

Lo que el maestro le dijo conduce a un comportamiento indefinido y, si tiene suerte, se bloquea la aplicación.

delete se usa para eliminar un solo objeto, mientras que delete[] se usa para eliminar una matriz de objetos. Mira este enlace para más información.