pb de constructeur C++ ?

pb de constructeur C++ ? - C++ - Programmation

Marsh Posté le 31-05-2005 à 16:45:37    

Bonjour,
 
dans mon programme, j ai l impression que je ne peux declarer qu un nombre limiter d'image dont voici le constructeur
 
Image(int nb_lig, int nb_col, int dim) // constructeur
    {  
      nblig_ = nb_lig;
      nbcol_ = nb_col;
      dim_   = dim;
      nbelement_ = nb_lig*nb_col*dim;
     
      tab = new double[ nbelement_ ];
      for(int k=0; k<dim_; k++)
        for(int i=0; i<nblig_; i++)
          for(int j=0; j<nbcol_; j++)
            tab[i*nbcol_ + j +  k*(nbcol_*nblig_)] = 0;
      isDefined_ = 1;
     
    }
 
tab est un pointeur vers un double
 
1er core dump : apres de nombreux calculs et declaration (programme relativement long) la declaration d une nouvelle image me fait un core dump. J ai verifie avec ddd que nbcol_, nblig_ et dim_ sont bien assignés
 
2eme core dump : je deplace la déclaration de l'image qui m a fait planté et je l a met juste avant la declaration d'image precedente. En gros ma derniere image est devenue l avant dernuiere et l avant derniere est devenue la derniere : je fais un core dump sur l'image qui est devenu la derniere
 
Est ce qu il y a une erreur dans ce constructeur ?
ddd dit que l erreur est a chaque fois sur la ligne du new.
 
Mon compilateur est gcc/g++ version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk)
 
merci pour votre aide

Reply

Marsh Posté le 31-05-2005 à 16:45:37   

Reply

Marsh Posté le 31-05-2005 à 17:26:06    

j ai trouvé grace a valgrind : c etait un pb de memoire j ecrivais en dehors du tableau alloué par l image precedence  
 
merci a ceux qui ont pris la peine de lire mon message

Reply

Marsh Posté le 31-05-2005 à 17:32:44    

pourquoi tu n'utilise pas std::vector ou autre ?
fais en sorte de pouvoir indexer en precisant 3 dimensions plutot que [i*nbcol_ + j +  k*(nbcol_*nblig_)]

Reply

Marsh Posté le 31-05-2005 à 17:40:30    

boost::multi_array<>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed