begin process at 2012 05 30 16:56:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Sauvegarder une adresse mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sauvegarder une adresse mémoire

mardi 25 septembre 2007 à 17:07:06 | Sauvegarder une adresse mémoire

gmorello

Bonjour, voici mon problème:
Dans mon code j'ai une fonction importer d'une dll (Je n'ai pas acces au source de cette dll) qui me détraque mes adresses mémoire de variable
Voici mon code :

void LireCarte( Parameters params )
{   
    //DECLARATION DE VARIABLE
    [...]  

    Err = Hn_Lecture(0, &DataOut, &LEC_TailleMemoire, &EtatCarte, &Err_complement);
    if(
Err ==0)
    {
        strcpy_s( returnValue, 50,"OK");
    }
    else
    {   
        strcpy_s( returnValue, 50,"ERR");
    }
   
    ReturnString( params, returnValue );
}


En rouge la variable en question qui est en fait un pointeur vers une structure.
En Bleu la fonction à l'origine de mes soucis.

Ma question est la suivante existe-t-il un moyen de sauvegarder l'adresse mémoire de params avant exécution de la fonction et de lui réaffecté ensuite.

merci .
mardi 25 septembre 2007 à 17:29:33 | Re : Sauvegarder une adresse mémoire

juju12

Puisque tu ne passes pas params en argument de ta fonction, je ne vois que deux explications : la fonction appelée est soit buggée (peu probable si tu l'importes) soit les arguments contiennent des données erronées, ou alors il y a un problème dans la fonction LireCarte : mets-la voir en entier, notamment la déclaration de returnValue.

mercredi 26 septembre 2007 à 09:37:24 | Re : Sauvegarder une adresse mémoire

gmorello

Voici la declaration dans le .h de Lire Carte

--------------------------------
DLL_IMP unsigned short CALL_TYPE Hn_LectureVitale
                                        (   const short     sTempsAttente,
                                            char            *pcDataOut,
                                            unsigned int    *puiLgDataOut,
                                            short           *psEtatCarte,
                                            unsigned short  *pusCodeErreur);
------------------------
ReturnValue est une chaine char returnValue[50] = "";

Mais je pense que cela vient directement de la fonction voici un exemple de debbug :

Avant d'executer le fonction.
debug

Apres executer la fonction


mercredi 26 septembre 2007 à 18:34:43 | Re : Sauvegarder une adresse mémoire

juju12

OK je crois avoir compris :
quand tu appelles ta fonction tu lui passes en parametre DataOut un tableau de taille 1 (un pointeur vers simple char en fait); seulement au travers de l'argument puiLngDataOut tu lui dis qu'il s'agit d'un tableau de taille 10000 => forcément s'il a plus d'un caractère à écrire (ce qui semble être le cas) il va écrire dans une zone hors du tableau; comme celui-ci est sur la pile ca va entre autres modifier les autres variables déclarées.
Solution :  tu initialises correctement LEC_TailleMemoire (à 1 taille du tableau), comme la fonction retourne sans doute une chaîne et pas un seul caractère tu augmentes la taille de ton tableau par exemple char DataOut[256] (avec LEC_... en conséquence, soit 256). Comme puiLngDataOut est un pointeur je suppose qu'il te retourne le nombre de caractères écrits dans la chaîne donc tu peux regarder sa valeur après appel de la fonction pour avoir un ordre de grandeur pour la taille de dataOut.


Cette discussion est classée dans : fonction, adresse, mémoire, sauvegarder, err


Répondre à ce message

Sujets en rapport avec ce message

Prob lecture adresse mémoire [ par xmaz57000 ] Voilà je viens de recevoir un ordinateur industriel qui dispose en standard de 8 entrées TOR.Malheureusement, il n'y a aucun driver qui permet de récu pointeur-mémoire [ par baby3378 ] bonjours à tous,Voila j'ai voulu créé un programme qui peut acceder à la mémoire grace aux pointuer, je m'explique:_un pointeur se place sur une adres Allocateur de Mémoire c++ [ par kellyse ] Bonjour à tous! Actuellement avant la fin du mois , je dois finir ce devoir très important ( concernant mon dîplome) et comme je suis une débutante , Problème mémoire Visual C++ 2005, (pourtant il n'y a pas de mémoire "dynamiquement allloué") [ par Sim 2005 ] J'ai un programme qui utilise beaucoup plus de mémoire qu'il ne le devrait. Toutes les variables sont statiques, il ne peut s'agir d'une fuite de mémo Ping d'adresse IP [ par tigerskin ] Bonjour !Je voudrais réaliser une fonction de Ping en c++ sans utiliser la console DOS (une fonction de Ping sous Windows). Je pense devoir utiliser l pointeurs et structures [ par glipper ] Bonjour,j'ai declaré dans un de mes programmes une structure dans un fichier header :typedef struct Fiche{    char iop[30];} Fiche;<b Problème avec la fonction free dans visual basic. [ par tobi222 ] J'ai créé une liste chainée toute simple avec où j'alloue de la mémoire dynamiquement et à la fin lorsque je détruis cette liste avec free visual m'en Fonction qui test la validité d'une adresse Email [ par Cedced41 ] Bonjour,J'utilise Visual C++ (Embedded) et je voudrais savoir si quelqu'un a une fonction toute faite qui teste une adresse email passée en paramêtre. Passage par adresse ds une fonction [ par benus ] Bonjour j'ai un ti soucis avec une fonction c++, il doit y avoir un probleme dans la recuperation de la variable :#include #include void entrer_carac gethostbyname??? C++ [ par typhoun ] Salut,   Je dois utiliser une adresse IP pour me connecté à un serveur et pour cela j'utilise la fonction struct hostent* FAR gethostbyname(const char


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales