Je reçois une erreur de segmentation lors de l'utilisation de la notation strncpy et (pointer-to-struct) -> (membre):Pourquoi ai-je une erreur de segmentation lors de l'utilisation de strncpy?
J'ai simplifié mon code. J'initialise une structure et place tous ses jetons sur une chaîne vide. Puis a déclare un pointeur sur une structure et lui assigne l'adresse de la structure.
Je passe le pointeur sur une fonction. Je peux imprimer le contenu de la structure au début de la fonction, mais si j'essaie d'utiliser le tp -> mnémonique dans une fonction strncpy, je me retrouve en erreur. Quelqu'un peut-il me dire ce que je fais mal? J'ai utilisé des instructions printf pour confirmer que le code s'arrête définitivement à la fonction strncpy.
Je ne comprends pas pourquoi je voudrais malloc la variable tp. C'est un pointeur qui pointe vers une mémoire qui a déjà été allouée à la structure du jeton. Si je malloc, cela va allouer une nouvelle mémoire qui n'est pas la structure des jetons, n'est-ce pas? Et je ne veux pas ça. – Joe
Vous vous êtes trompé sur la propriété de la mémoire référencée par "tp" dans l'exemple de code. C'est l'adresse d'une structure qui a été déclarée sur la pile. Il est parfaitement légitime d'utiliser un pointeur comme indiqué, jusqu'à ce que la structure référencée soit hors de portée. À ce stade, la mémoire est libérée et il n'est plus sûr de le référencer. Le bug dans le code d'OP est ailleurs (voir ma réponse). –
-1: Cela n'a absolument rien à voir avec son problème. – rampion