¿Por qué un puntero a una matriz char necesita strcpy para asignar caracteres a su matriz y la asignación de comillas dobles no funcionará?

El primer ejemplo no funciona cuando vas a eliminar el puntero. El programa se cuelga cuando agrego el terminador nulo o sin él obtengo:

Debug Assertion Failed Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) de Visual Studio 2008

//Won't work when deleting pointer:
    char *at = new char [3];
    at = "tw"; //   <-- not sure what's going on here that strcpy does differently
    at[2] = '\0'; // <-- causes program to hang
    delete at;

//Works fine when deleting pointer:
    char *at = new char [3];
    strcpy(at,"t");
    at[1] = 'w';
    at[2] = '\0';
    delete at;

Entonces, ¿qué pasa cuando uso comillas dobles en lugar de strcpy? Ambos coutearán la cadena perfectamente y el depurador no mostrará nada diferente.

Respuestas a la pregunta(9)

Su respuesta a la pregunta