¿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.