Erreur mémoire a l'appel d'une fonction [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007
-
Messages postés
5
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007
-
Bonjour tlm !

J'ai besoin d'aide par rapport au message d'erreur suivant :
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

J'explique le contexte :)

Outill de dév : Visual c# express 2005

Je doit accéder à une fonction se trouvant dans une DLL que l'on m'as fournit qui permet de calculer un CRC.
J'ai un premier fichier : fileCRC.cs dans lequel j'ai le code suivant :
public class fileCRC
{
    [DllImport("filecrc.dll")]
    public static extern string FileCRCName(string sFile,string crc);
}

Un deuxième fichier dans lequel je fais l'appel à la fonction :
string crc="";
fileCRC.FileCRCName(filePathForCRCCalcul, crc);

Et c'est au moment de l'appel à la fonction que ca crash et que j'ai ce beau message d'erreur....

Je vous en supplie aidez moi Merci

4 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Essaie de remplacer

StringBuilder crc = null;

par

StringBuilder crc = new StringBuilder();

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Salut, on a pas assez d'infos sur ta méthode native.

Elle prend des chaines ANSI ou UNICODE ?
Ses paramètres sont en entrée et/ou en sortie ?
Messages postés
5
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

Malheureusement je n'ai pas plus d'info sur la méthode native... Tout ce que je sais c'est que c'est une procédure avec 2 paramètres string.
J'ai adapaté ma signature :

[DllImport("filecrc.dll")]
 public static extern void FileCRCName(string sFile, [MarshalAsAttribute(UnmanagedType.LPStr)] StringBuilder crc);

Il y a des chances qu'elle prenne les chaînes en ansi. donc j'ai ajouté ca : [MarshalAsAttribute(UnmanagedType.LPStr)]. je sais pas si c'est juste ?

Et puis tjr l'appel :
StringBuilder crc = null;
filePathForCRCCalcul = Settings.getParameter(Settings.constlocalizedResultsPath) + @"" + sDialogName +".xml";
fileCRC.FileCRCName(filePathForCRCCalcul, crc);  <------ Là ou ca crash

J'ai tjr l'erreur de tentative de lecture ou d'écriture dans la mémoire protégée....
Messages postés
5
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

Génial, ça fonctionne !
Merci bcp !!!!