Probleme avec memcpy();

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 26 mars 2007 à 16:29
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 27 mars 2007 à 10:32
Bonjour a tous ,

je viens m'adresser a vous en dernier recours car je rencontre actuellement un probleme avec mon appli C
qui me dépasse largement.
Voila j'ai une erreur qui est générée par la fonction memcpy en me disant violation d'ecriture a l'adresse 0x000000.
pourtant le mme code fonctionne sans probleme ainsi :

  LPBYTE  ptrbyte;

   int idx = CSocketManager::setmsgType(mt_hmi); // fonction qui me retourne un index qui est tjrs 0
   ptrbyte = pMsg->lpBufferHmi[idx].lpMsg;   
   _ASSERTE( ptrbyte != NULL );
    memcpy( ptrbyte, (struct smsgHmiHeader * )& HmiHeader, sizeof(smsgHmiHeader));
    ptrbyte = ptrbyte + sizeof(smsgHmiHeader);
    memcpy( ptrbyte, lpData , dwCount);
    pMsg->lpBufferHmi[idx].dwCount = sizeof(smsgHmiHeader) + dwCount;

ICI aucun probleme mais
je voudrais remplacer mon bufferHmi par un buffer tournant
j'ai deja une fonction valide qui permet de chercher un emplacement libre dans mon buffer
et de me renvoyer l'index de cet emplacement, la suite est la meme:
je copie ce dont j'ai besoin dans ptrbyte mais c'est a ce moment la que ca bloque!
voici le code qui ne fonctionne PAS:

int idx = GetQueueNextIdx(stMsgBuffer.lpBufferHmi, MAX_MSG_TABLE, msgquidx_outHmi); //fonction qui renvoi l'index pr un emplacement vide
  if (idx >=0 )
  {
    ptrbyte = pMsg->lpBufferHmi[idx].lpMsg;   
    _ASSERTE( ptrbyte != NULL );
    memcpy( ptrbyte, (struct smsgHmiHeader * )& HmiHeader, sizeof(smsgHmiHeader));
    ptrbyte = ptrbyte + sizeof(smsgHmiHeader);
    memcpy( ptrbyte, lpData , dwCount);
    pMsg->lpBufferHmi[idx].dwCount = sizeof(smsgHmiHeader) + dwCount;
    }

Je ne sais pas si vous pouvez m'aider et si vous comprennez mon probleme
mais je coince serieusement et j'espere que vous pourrez m'aider ! merci d'avance!
Si vous désirez plus d'explications je serais ravi de vous repondre ....
 
A voir également:

2 réponses

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
27 mars 2007 à 09:18
Re,

bon il semblerait que personne ne soit inspiré par mon probleme...*
est ce a cause de l'explication (pas tres claire) ou juste que vous ne savez pas?

 
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
27 mars 2007 à 10:32
Bon j'ai résolu mon probleme mais ca m'en procure un nouveau
en gros j'ai fait une init de mon buffer en debut de programme
comme ca il n'est plus a NULL et je peux donc effectuer le memcpy
mais dans la suite de mon programme, je vérifie si celui ci est null pr pouvoir continuer
et comme il est plus NULL ben ca bloque ....

bref !
le pb de memcpy est résolu !

 
0
Rejoignez-nous