Pb d'allocation mémoire en C++

Fermé
jb - 27 mars 2008 à 14:57
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 27 mars 2008 à 16:25
Bonjour,

Je suis en train de coder une méthode de classification d'images en C++ (pas d'importance pour la suite) et j'ai un soucis, je pense, d'allocation mémoire:

Le programme exécute une fonction "Transformée de Harr"
Puis il exécute une seconde fonction "Kmeans"
(dans ces deux fonctions beaucoup d'allocation mémoire sont effectuées avec new puis libérées avec delete)
(ces deux fonctions s'exécute sans pb)
ensuite le programme exécute une nouvelle fois la fonction "Kmeans" et une erreur intervient dans les allocations mémoires lors de :
t = (float**) alloc_image_float(sizrows*sizcols, nb_class_max);
(la fonction "alloc_image_float" alloue un espace mémoire avec new)

L'erreur est une "segmentation fault"

Je n'arrive pas à déboguer ce pb, je pense que c'est un pb d'allocation mémoire.
Si quelqu'un à une idée?

Bonne journée.
JB

1 réponse

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
27 mars 2008 à 16:25
Bonjour,

ensuite le programme exécute une nouvelle fois la fonction "Kmeans" et une erreur intervient dans les allocations mémoires lors de :

Deux questions qui vont te sembler simplistes, mais elles peuvent avoir de l'importance:

- Es-tu absolument certain que les ressources mémoires ont été effectivement libérées (**test après chaque delete)
à l'issue des deux exécutions précédentes ("Transformée de Harr" et la 1ère exécution de "Kmeans") ?

- Dans le même ordre d'idée, lors de la seconde exécution de "Kmeans" pour une raison x (logique d'exécution) le pointeur correspondant ne serait pas resté = NULL après l'obtention des ressources mémoires (** test après chaque new) ? L'utilisation d'un pointeur = NULL peut engendrer ce type d'erreur.

** test après chaque new et chaque delete :
IF (pointeur == NULL)
{printf ("nom_pgm: Probleme a la création/destruction du tableau T") ;
.................... ;}
0