Bonjour,
Je pense que le plantage vient des paramètres que tu donnes à ta fonction.
En particulier, si tu lui donne à manger des indices invalides de ton tableau, ça a des chances de planter.
par exemple :
1 2 3 4 5 6 7
| structure_student a[10];
// ceci peut planter car le nom est trop long :
a[0].name = "123456789012345678901234567890123456789012345678901";
// ceci peut planter à cause du 45 :
exchangeStudent(&a[0], 4, 45);
// ceci peut planter à cause du 10 :
exchangeStudent(&a[0], 4, 10); |
Es-tu en train d'apprendre le C++ ?
Est-ce à partir d'un livre ? d'un cours ?
Si tu es en train d'apprendre à gérer la mémoire, je comprends que tu codes comme ça et c'est très bien de commencer par se heurter un petit peu aux problèmes d'assignations de mémoire.
Mais attention : une fois que tu maitriseras les allocations, les pointeurs, les tableaux, il faudra absolument arréter de programmer comme ceci. Ton code présente d'énormes risques d'erreurs, et c'est justement dans une de ces erreurs que tu as du tomber.
Un code parfait ne peut pas planter, même s'il est mal utilisé par quelqu'un qui ne connais rien à son fonctionnement. Un code correct essaie d'être parfait.
Par exemple, ta fonction :
void exchangeStudent(structure_student* studentS, int a, int b)
suppose que le :
- studentS pointe sur un tableau de student alloué (et pas sur NULL ou sur une zone émmoire non-allouée)
- a et b sont des indices valides pour le dit tableau
Courage
Partager