Erreur de segmentation sur un cas élémentaire

Résolu
silio Messages postés 12 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
pour m'entrainer à la programmation c++, j'ai écris une classe vecteur de la sorte :

class VecteurL
{

private :

int taille;
double* vec;

public :
VecteurL ()
{
taille=3;
vec=new double[taille];
vec[0]=1;
vec[1]=2;
vec[2]=2;
};
void change(int i,double valeur)
{
if(vec) vec[i]=valeur;
};

};

La compilation réussi, mais lors de l'appel de la fonction change, qui change la valeur du ième élément du tableau, il y a une erreur de segmentation. Pourquoi ?
Configuration: Windows XP
Firefox 2.0.0.12

3 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    mis à par si tu met un i>2, je ne voi pas pourquoi.
    Mais comme tu fait toi même le truc et que tu as la taille, n'ésite pas à mettre des controles de taille :
    void change(int i,double valeur)
    {
    if(i<0 | i>=taille)return; // je met return, mais tu peux mettre n'importe quelle gestion d'erreur
    if(vec) vec[i]=valeur;
    };
    Met nous ton programme d'appel, il y a peut être un problème dedans
    1
  2. silio Messages postés 12 Statut Membre 1
     
    Voila le programme d'appel :

    int main(int argc, char *argv[])
    {

    VecteurL v;

    v.change(1,9.);

    system("PAUSE");
    return EXIT_SUCCESS;
    }

    Voila.
    1
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    dsl, je ne vois vraiment pas.
    à par le new qui foire.
    1