Erreur de segmentation sur un cas élémentaire
Résolu
silio
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 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 ?
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 ?
A voir également:
- Erreur de segmentation sur un cas élémentaire
- Cas ram - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
3 réponses
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
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