Probleme avec memcpy();

Signaler
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
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 ....
 

2 réponses

Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
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?

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
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 !