Mon programme se bloque par intermittence lorsqu'il essaie de copier un tableau de caractères qui n'est pas terminé par un terminateur NULL ('\ 0').Comment empêcher la copie d'une chaîne de pointeur sauvage
class CMenuButton {
TCHAR m_szNode[32];
CMenuButton() {
memset(m_szNode, '\0', sizeof(m_szNode));
}
};
int main() {
....
CString szTemp = ((CMenuButton*)pButton)->m_szNode; // sometime it crashes here
...
return 0;
}
Je me doutais bien que quelqu'un n'a pas copié le caractère bien fini par « \ 0 », et il a fini comme:
Stack
m_szNode $%#^&!&!&!*@*#&!(*@(!*@@&#&*&@@!^&*&#(*[email protected]*((*&*SDFKJSHDF*(&(*&(()(**
Pouvez-vous me dire ce qui se passe et que dois-je faire pour empêcher la copie du pointeur sauvage? L'aide sera très appréciée!
Je suppose que je suis incapable de vérifier si le tableau de caractères est NULL avant de copier ...
Nous avons besoin de plus d'informations, telles que la façon dont pButton est créé, et ce qui arrive à ce pointeur entre sa création et la ligne de code que vous avez fournie ici. –