Liberation de la memoire - tableau dynamique a plusieurs dimensions
playmo420
Messages postés50Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention 6 juin 2006
-
4 mai 2004 à 15:12
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
6 mai 2004 à 10:50
Salut
J'ai un petit probleme : j'utilise des tableaux a plusieurs dimensions, mais lorsque je veux liberer la memoire (dans le destructeur de la classe), des erreurs "Debud assertion failed" se produisent... (j'utilise VC++ 6) voila la fonction qui cree les tableaux, puis le destructeur :
void GASchedulingGenome::initialiseArrays() {
int i,j,nbOperations(getNbOperations());
schedule= new int *[5];
for (i = 0; i < 5; i++) schedule[i]= new int [nbOperations];
lookup= new int **[nbJobs];
for (i = 0; i < nbJobs; i++)
{
lookup[i]= new int *[nbOperations];
for (j = 0; j < nbOperations; j++) lookup[i][j]= new int [2];
}
}
GASchedulingGenome::~GASchedulingGenome()
{
int i,j,nbOperations(getNbOperations());
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 5 mai 2004 à 11:41
ce qui est possible aussi, c'est que pendant l'utilisation tu écrit en dehors des bornes du tableau et que tu écrases des données relatives à la gestion mémoire. dans ton code, il faut vérifier à chaque accès les indices passés.
playmo420
Messages postés50Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention 6 juin 2006 5 mai 2004 à 12:32
Toujours pas...
En fait ce qui est etrange c'est qu'un simple "delete[] lookup[0][0];" dans le destructeur provoque l'erreur...
J'y connais pas grand chose en gestion de la memoire, mais peut etre que le message d'erreur te dira qqchose :
"....
Expression : _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
..."
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 6 mai 2004 à 10:50
ce qui est possible aussi c'est que ça soit une autre variable qui te fasse planter lookup (genre une chaîne trop courte qui écrase ce qui a après, en l'occurence lookup).