Accueil > Forum > > > > Erreur Memoire ne peut pas être read
Erreur Memoire ne peut pas être read
mardi 18 janvier 2005 à 12:24:22 |
Erreur Memoire ne peut pas être read

asis1
|
Bonjour à tous, J'ai une erreur du genre "L'instruction à l'adresse @ emploie l'adresse memoire @. la memoire ne peut pas être "Read" ouu "write" suivant que je tente d'écrire ou de lire de la mémoire. Merci de m'aider car je perds du temps... Peace Asis1
|
|
mardi 18 janvier 2005 à 12:52:17 |
Re : Erreur Memoire ne peut pas être read

ymca2003
|
En général cela provient d'un dépassement lors de l'accès à un tableau où l'accès à un pointeur non valide (déjà libéré, non initialisé)
Pour s'en sortir => vérifier avant d'accèder à un élément du tableau s'il est valide (à l'aide de macro ASSERT par exemple). => mettre à NULL un pointeur qui vient d'être libéré ou déclaré (permettra un test à NULL pour vérifier la validité).
|
|
mardi 18 janvier 2005 à 13:52:44 |
Re : Erreur Memoire ne peut pas être read

asis1
|
Merci. Au fait j'utilise des pointeurs.....mais j'ai essayé de faire ce que tu m'as dit mais rien n'y fait, voilà une portion de mon programme: char* id="ab", *nom="mon nom", *comment="no comment"; int num=12; critere* crit=NULL; crit->createcritere(id,nom,comment,num);//c'est làou l'erreur survient lors de l'execution merci de me faire part de votre aide
Peace Asis1
|
|
mardi 18 janvier 2005 à 14:32:55 |
Re : Erreur Memoire ne peut pas être read

ymca2003
|
On ne manipule pas les chaînes de caractères comme cela : on déclare un tableau de char ou on alloue avec malloc et on recopie dedans avec strcpy ou bien ou déclare et on initialise en même temps :
1)char id[3]; strcpy(id, "ab");
2) char* id = malloc(3); strcpy(id, "ab");
3) char id[3] = "ab";
on peut néanmoins faire char* id = "ab"; mais attention, la chaîne de caractère sera readonly, tu ne pourras pas la modifier avec strcpy(id, "12");
critere* crit=NULL; crit->createcritere(id,nom,comment,num); => c'est normal que ça plante car tu accèdes à une fonction d'un pointeur NULL (où alors il y ades lignes en plus entre ces 2 là), crit doit être initialiser à autre chose que NULL (avec un objet existant ou avec malloc/new) avant d'être utilisé
|
|
mardi 18 janvier 2005 à 14:47:10 |
Re : Erreur Memoire ne peut pas être read

asis1
|
Au fait la déclaration je lui remis comme cela mais ça plante tjours. Désolé de t'embeter avec ça mais je suis nul en c++. critere *crit; String idet="M1",name="Moyen",comment="No comment"; float va=10.0; int nb=5; crit=new criterion(10); crit->createcriterion(idet,name,comment,va,nb);
Peace Asis1
|
|
mardi 18 janvier 2005 à 14:55:41 |
Re : Erreur Memoire ne peut pas être read

ymca2003
|
Pourrais-tu mettre le code de la fonction createcriterion (avec son prototype) ?
|
|
mardi 18 janvier 2005 à 15:05:40 |
Re : Erreur Memoire ne peut pas être read

asis1
|
dans la classe critere.h j'ai juste mis ça: void createcriterion(char*,char*,char*,float,int); et dans le .cpp j'ai mis ça: static critere* crit; static tabcritere *tabcrit; void critere::createcriterion(char* ident, char* name, char* comment, float val, int nb) { id->setident(ident); id->setname(name); id->setcomment(comment); crit->setidentifier(id); valmat->setvaleur(val); crit->setvaleur(valmat); crit->nb=nb; tabcrit->setcriterion(crit); };
Peace Asis1
|
|
mardi 18 janvier 2005 à 15:15:03 |
Re : Erreur Memoire ne peut pas être read

ymca2003
|
ces variables là sont-elles initialisées quelque part ? static critere* crit; static tabcritere *tabcrit;
les pointeurs id et valmat, ils sortent d'où ? Je me demande si tu as bien compris la notion d'objet en c++ (variables et fonctions membres...) car dans la classe critere, tu utilise une fonction membre pour initiliser un objet critere static.
je pense qu'il faudrait l'ensemble du prog( si c'est pas trop long) ou au moins l'ensemble de la classe critere et les varibles globales utilisées.
|
|
mardi 18 janvier 2005 à 15:31:22 |
Re : Erreur Memoire ne peut pas être read

asis1
|
Ok voici la classe critere class critere{ int nb; identifier* id; valeurMatrice* val; // friend ostream & operator << (criterion &crit); public: criterion(int numb){nb=numb;}; ~criterion(){delete []id; delete []val;}; void setidentifier(identifier *ident) {id = ident;} void setvaleur(valeurMatrice *vale) {val = vale;} valeurMatrice *getvaleur(criterion*) {return val;} const int& getnb(){return nb;} void createcriterion(char*,char*,char*,float,int); }; et voici la classe valeurMatrice class valeurMatrice { float valeur;
public: valeurMatrice(){}; ~valeurMatrice(){valeur=0.0;} void setvaleurmatrice(float id) {valeur = id;} const float getvaleurmatrice(const int i)const {return valeur;} };
dans le.cpp static critere* crit; static tabcritere *tabcrit; static valeurMatrice* valmat; static identifier *id; void critere::createcriterion(char* ident, char* name, char* comment, float val, int nb) { crit=new criterion(); id->setident(ident); id->setname(name); id->setcomment(comment); crit->setidentifier(id); valmat->setvaleurmatrice(val); crit->setvaleurMatrice(valmat); crit->nb=nb; tabcrit->setcriterion(crit); };
la classe identifier: class identifier{ String ident; String name; String comment; public: identifier(){ident="";name="";comment="";} ~identifier(){delete [] ident; delete [] name; delete [] comment;} void setident(const char *id) {ident = id;} void setname(const char *nom) {name = nom;} void setcomment(const char *com) {comment = com;} const String& getident()const {return ident;} const String& getname()const {return name;} const String& getcomment()const {return comment;} };
j'espère que j'ai fourni tout le necessaire. En tout cas merci encore mille fois de ton aide Peace Asis1
|
|
mercredi 19 janvier 2005 à 12:20:07 |
Re : Erreur Memoire ne peut pas être read

ymca2003
|
les variables static sont à virer.
la fonction createcriterion est une fct membre de la classe critere donc appelée avec un objet critere, inutile d'en crée un dedans, opn a accès implicitement à l'appelant par le pointeur this.
void critere::createcriterion(char* ident, char* name, char* comment, float val, int localnb) { id= new identifier(); id->setident(ident); id->setname(name); id->setcomment(comment); valmat = new valeurMatrice(); valmat->setvaleurmatrice(val); crit->nb=localnb; tabcrit->setcriterion(crit); };
dans la classe Identifier : - soit tu utilise des String qui gère automatiquement la mémoire auquel cas tu ne doit pas faire delete[] dessus dans le destructeur (doit pas compilé d'ailleurs) - doit tu utilise des char* qu'il faut allouer lors de la recopie et libérer dans le destructeur :
|
|
Cette discussion est classée dans : erreur, adresse, memoire, read
Répondre à ce message
Sujets en rapport avec ce message
erreur "ne peut etre un read" [ par Sade ]
Salut a tous le monde.Dans le programme que j'ai develoP, j'utilise le FileMapping pour pouvoir echange des données entre deux programme distinct fonc
la memoire ne peut pas etre read [ par imothepe_33 ]
Au fait mon probleme est le suivant: j'aimerais savoir ce que veut dire le message "erreur...la memoire ne peut pas etre read...." (c a peut pres le m
Erreur FAT sur carte memoire [ par Galmiza ]
Salut,J ai un gros soucis avec une carte memoire xD d appareil photo numerique.J ai cherche des solutions sur des forums, j y ai trouve des problemes
la memoire ne peut etre read [ par parain74 ]
Bonjour je suis débutant dans la programmation, je vien de dévelloper un banc de test et lorsque je lance le proogramme j'ai le message d'erreur qui a
Erreur (0x80000003) - L'exception Point d'arrêt [ par nuxaly ]
Bonjour, j'ai un probleme de memoire. j'essaye d'executer mon programme c++ sous visual c++ et un erreur s'affiche le voila : "L'exception Point d
[SDL] process retourne -1073741819 [ par leptitced13 ]
Bonjour a tous !Voila j'ai fait une fonction que je souhaite appeler dans mon main... Je compile: aucune erreurMais lorsque je run, il y a une erreur.
Erreur de comparaison entre un caractère (string) et une case d'un tableau (const char*) [ par wizard512 ]
Bonsoir, J'obtient une erreur lors de la comparaison entre un caractère et une case d'un tableau. <font color="#006400
erreur make [ par chochatown ]
Bonjour, j'utilise ubuntu ,gcc , Qt 4.5.1 et je veux compiler une application que je veux la modifier avec QT. le probleme c'est que l'application uti
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|