Erreur mémoire a l'appel d'une fonction

Résolu
cs_dadou22 Messages postés 5 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 - 18 oct. 2007 à 16:45
cs_dadou22 Messages postés 5 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 - 19 oct. 2007 à 10:47
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

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
19 oct. 2007 à 09:48
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)
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
18 oct. 2007 à 17:26
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 ?
0
cs_dadou22 Messages postés 5 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 19 octobre 2007
19 oct. 2007 à 09:00
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....
0
cs_dadou22 Messages postés 5 Date d'inscription mercredi 9 mai 2007 Statut Membre Dernière intervention 19 octobre 2007
19 oct. 2007 à 10:47
Génial, ça fonctionne !
Merci bcp !!!!
0
Rejoignez-nous