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