Erreur de segmentation sur un cas élémentaire [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
3 avril 2008
-
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
-
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 ?

3 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
12
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
3 avril 2008
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
dsl, je ne vois vraiment pas.
à par le new qui foire.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci