Bonsoir,

Les Topics se suivent...mais ne se ressemble pas! J'ai un petit, bon d'accord un gros problème avec un bout de code qui concerne une liste générique doublement chaînée lorsque je l'utilise avec des vecteurs (pas ceux de la STL...).
Le problème est une fuite mémoire assez bizarroïde (c'est le propre d'une fuite mémoire?) qui se passe quand je lance le programme et qui freeze DrWatson (le débugeur post-mortem qui arrive après le crash de l'application) une 30aine de seconde...Donc réflexe, je lance le débugueur de C::B et là.... PATATRAAAAA, ça fonctionne au poil...

Du côté liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
  template<typename TYPE, unsigned int nb_cur>
  struct LIST
    {
        ///Data level
        struct ELMT
        {
            ELMT* prev;
            TYPE data;
            ELMT* next;
 
            ELMT(ELMT* p, TYPE& dat) : data(dat)
            {
                prev = p;
            }
        };
 
        ///Data
        unsigned int length;
        ELMT *fst;
        ELMT *cur[nb_cur];
        ELMT *lst;
 
        LIST()
        {
            unsigned int i;
 
            length = 0;
 
            fst = NULL;
            lst = NULL;
 
            for(i=0; i<nb_cur; i++)
                cur[i]=NULL;
 
            return ;
        }
 
        unsigned int push(TYPE& data)
        {
            //Data problem
            if( fst==NULL )
            {
                fst = new ELMT(NULL, data);
                lst = fst;
            }
            else
            {
                lst->next = new ELMT(lst, data);
                lst = lst->next;
            }
 
            length++;
            return length;
        }
    };
Du côté vecteur (dim étant un entier, non signé, prédéfini)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
      struct VECTOR
        {
            float* data;
 
            VECTOR()
            {
                data = new float(dim);
                return ;
            }
 
            VECTOR(VECTOR& v)
            {
                unsigned int i;
                data = new float(dim);
 
                for(i=0; i<dim; i++)
                    *(data+i) = *(v.data+i);
 
                return ;
            }
 
            VECTOR& operator= (const VECTOR& v)
            {
                unsigned int i;
 
                for(i=0; i<dim; i++)
                    *(data+i) = *(v.data+i);
 
                return *this;
            }
   };
(bien entendu j'ai allégé un peu le code...)

et pour le test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
VECTOR a;
LIST<VECTOR,1> lst;
lst.push(a);
(dois-je aussi utiliser plutôt memcpy et memset pour mes opérations sur des tableaux???)

Voili, voilou, je vous remercie de m'aider.