LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
26 mars 2007 à 16:29
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 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:
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 ....
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 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 ....