Jetez un coup d'œil à ce programme :
class CopyCon
{
public:
char *name;
CopyCon()
{
name = new char[20];
name = "Hai";//_tcscpy(name,"Hai");
}
CopyCon(const CopyCon &objCopyCon)
{
name = new char[_tcslen(objCopyCon.name)+1];
_tcscpy(name,objCopyCon.name);
}
~CopyCon()
{
if( name != NULL )
{
delete[] name;
name = NULL;
}
}
};
int main()
{
CopyCon obj1;
CopyCon obj2(obj1);
cout<<obj1.name<<endl;
cout<<obj2.name<<endl;
}
Ce programme se bloque à l'exécution. Erreur : "Expression : _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
Si j'assigne "Hai" au nom en utilisant l'opérateur d'alignement, il se bloque. Alors que lorsque j'utilise le func string _tcscpy pour assigner "Hai" au nom, il fonctionne parfaitement. Quelqu'un peut-il m'expliquer pourquoi ?