Copie de dword d'une zone memoire dans une autre...(pointeur)

cs_anosan Messages postés 19 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 3 novembre 2004 - 11 oct. 2004 à 18:42
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 11 oct. 2004 à 23:22
Bonjour,
j'ai un problème pour copier des dword d'une zone memoire alloués par un globalalloc) vers une autre zone memoire (globalalloc). Ca peux parrâitre tout bête, mais j'au un peu de mal... Mon programme bug au moment d'associer le temp=*(ptSource...) .
Est-ce à cause du premier cast sur le type de pointeur?
Ou autre chose?
Merci de votre aide ;).
---------------------------------------------------------------------
Voici mon code (enfin un petit morceau avec les elements intéressants...):

void Copie(LPVOID pDest,LPVOID pSource,int long1,int long2,int Delta1,int Delta2)
{

DWORD temp=0;
DWORD *ptDest=(DWORD*) pDest; /* cast du type de pointer */
/* ici, je souhaite avoir ptDest et pDest pointent sur la même zone memoire de type dword */
DWORD *ptSource=(DWORD*) pSource; /* cast du type de pointer */

ptDest+=Delta1; /* ptDest pointe sur la zone memoire pDest+Delta1*/
ptSource+=Delta2; /* ptSource pointe sur la zone memoire pSource+Delat2 */

[...]

temp=*(ptSource+4*i); /* i une position aléatoire entre 0 et long1 */
/* je souhaite avoir dans temp le dword pointé par ptSource+4*i */

*(ptDest+4*j)=temp; /* j position aléatoire entre 0 et long2*/

[...]
}

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 oct. 2004 à 20:52
/* i une position aléatoire entre 0 et long1 */
/* je souhaite avoir dans temp le dword pointé par ptSource+4*i */
temp=*(ptSource+4*i);

ptSource étant un pointeur sur DWORD, il est inutile de mettre 4*i pour atteindre le ième élément de type DWORD.

temp = *(ptSource+i); devrait suffir (à moins que tu veuille récuperer un élément multiple de 4)
0
cs_anosan Messages postés 19 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 3 novembre 2004
11 oct. 2004 à 21:33
Salut ymca2003,
Merci de ta reponse.
Même si ta remarque est bonne ;) (j'ai modifié mon code), cela ne resoud pas mon problème.
J'ai debuggé avec le debugger intégré à dev-C++, et un message d'erreur apparait dès le cast du pointer.
Est ce que quelqu'un aurait une idée de comment faire?
Merci d'avance ;).
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 oct. 2004 à 23:22
pourrais-tu mettre la partie allocation et appel de la fonction (le pointeur passé n'est peut être pas valide ou les tailles passées pas les bonnes).
0
Rejoignez-nous