Bonjour,
je viens ici pour comprendre pourquoi la fonction malloc pourrait me provoquer des erreurs d'executions.
je m'explique :
j'ai un code générant des tableaux de dimensions 1 et de dimensions 2 de manière dynamique. Ces tableaux font partis d'une classe que je nome AGO. Lors de l'utilisation du programme, je crée un objet de AGO qui crée dans son constructeur les tableaux voulus selon les dimensions passées en paramètres.
A chaque utilisation, je recrée un nouvel objet AGO. A la première utilisation, il n'y a aucun problème. A la seconde utilisation, mon programme plante. En remontant dans le code, j'ai pu constater que les lignes contenant la fonction malloc en sont responsable.
Le programme ne demande pas beaucoup de mémoire, au plus quelques ko par tableau, donc cela ne peut etre un débordement. (au fait je préviens que je suis un débutant du malloc).
donc voici les deux lignes responsables :
la variable m a toujours la même valeur. (donc là ce n'est pas du dynamique mais c'est juste pour vérifier si je peux faire plusieurs fois la même opération).// on crée le vecteur de demande
v = (signed int *) malloc(sizeof(signed int)*m);
// on crée le vecteur d'erreur
e = (signed int *) malloc(sizeof(signed int)*m);
Le plantage est significatif après une deuxième création d'objet AGO voir parfois à la troisième ou quatrième. Par contre, avec les lignes suivantes du code :
a = (bool**) malloc(n * sizeof(bool*));
for(unsigned int i = 0; i < n; i++)
a[i] = (bool*) malloc(m * sizeof(bool));
le plantage se fait obligatoirement à la seconde fois. (la variable n est fixé).
Pourriez vous me conseillez concernant la fonction malloc etc. Cela me pose quelques problèmes pour développer et cela m'ennuie d'avoir un programme instable.
merci pour vos futures réponses !
Partager