Précédent   Le Forum de Génération Nouvelles Technologies > Logiciels > FAQ logiciels
S'inscrire FAQ Stats IRC Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

FAQ logiciels Les réponses aux questions les plus fréquentes

Réponse
 
LinkBack Outils de la discussion Modes d'affichage
Vieux 01/10/2003, 01h52   #1 (permalink)
Kikof
Informaticien du dimanche
 
Date d'inscription: mars 2003
Localisation: Autrefois, on appelait cela Europe
Âge: 41
Messages: 7 039
Par défaut

Il s'agit des erreurs : "La mémoire ne peut être read" et "La mémoire ne peut être written" avec leurs équivalents strictement anglais "memory cannot be read" et "memory cannot be written".

Il s'agit d'erreurs génériques n'apportant aucune autre information utile que le programme ne marche pas. Elles peuvent être dues à un bug du programme émettant cette erreur ou bien (plus rare) à une dll endommagée ou pas de la bonne version.
Pour résoudre ce type d'erreur, il convient de se rendre sur le site de l'éditeur du logiciel défaillant et voir si le problème n'est pas mentionné.

Ce genre de message est émis par des programmes écrits avec visual C++. Voici le pourquoi de la chose :

Un programme, pour fonctionner, doit être projeté depuis son fichier sur le disque vers la mémoire vive de l'ordinateur (RAM). On obtient par exemple ce genre de schéma (simplifié) :

Code:
|-----------|(Adresse = zzzz) Fin du programme
| Segment 3 |<----------Données Lecture (protégées en écriture, non exécutable)
|-----------|(Adresse = yyyyy)
|           |
| Segment 2 |<----------Données Lecture/écriture (non exécutable)
|-----------|(Adresse = xxxx)
|           |
| Segment 1 |<----------Code exécutable (protégé en écriture)
|           |
|-----------|(Adresse = vvvv) Debut du programme
Windows travaille en mode protégé, c'est à dire que des dispositifs pour éviter la corruption de données et de code sont actifs en permanence, au niveau même du processeur. A chaque lecture ou écriture d'une adresse mémoire, le processeur va contrôler les attributs du segment de mémoire visé (permissions de lecture, écriture, exécution, etc...) et si l'instruction ne respecte pas ces attributs, il va interrompre l'exécution du programme et générer ce que l'on appelle une exception.
Dans le cas de programmes fait avec visual C++, l'exception est captée/piégée par des routines chargées d'afficher les divers messages que l'on peut voir. Si une tentative d'écriture est effectuée sur une zone protégée en écriture, le message "La mémoire ne peut être written" va être généré. Le message "La mémoire ne peut être read" va être typiquement généré si le programme essaye d'accèder en lecture à une zone mémoire ne lui appartenant pas, c'est à dire une adresse mémoire inférieure à vvvv ou supérieure à zzzz.

Cas de programmes faits avec visual C++ (localisé français)
--------------------------------------------------------------------------
Objet "Application"
---> Exception! --> Gestionnaire d'exception visual C++ -- > "La mémoire ne..."

Cas de programmes faits avec C++ Builder (localisé français)
----------------------------------------------------------------------------
Objet "Application"
---> Exception! --> Gestionnaire d'exception Borland -- > "Violation d'accès..."

Cas de Programmes ou zones d'exécution sans gestion d'exception
-------------------------------------------------------------------------------------
Programme
--> Exception! --> Gestionnaire d'exception Windows -- > "Ce programme a rencontré une erreur..."

Dernière modification par Kikof 26/08/2006 à 18h57. Motif: Mise en page suite à ipb -> vBulletin
Kikof est déconnecté   Réponse avec citation
Réponse



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non
Outils de la discussion
Modes d'affichage



Fuseau horaire GMT +2. Il est actuellement 16h23.

S'inscrire Charte Stats IRC FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus