Bonsoir,

Un soucis bizarre avec memcpy.
J'ai le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
pmBaseAddress = FS_NvmAddressGet(FS_Nvm_PostMortem);
if(0 == pmBaseAddress)
    printf("\n------ERROR to get starting address of Post Mortem file------\n");
else printf("\nValeur de pmBaseAddress: 0x%x\n",pmBaseAddress);
    pmAddress = pmBaseAddress;
 
indexBuf = (indexBuf+1) % SavedContextNum;
 
printf("Valeur de pmAddress:0x%x   pmBaseAddress:0x%x\n",pmAddress,pmBaseAddress);
 
UInt32 *address;
address = FS_NvmAddressGet(FS_Nvm_PostMortem);
printf("Valeur de address: 0x%x\n",address);
 
address = memcpy((void*)&pmAddress,(char*)&TaskInfoBuf[indexBuf], sizeof(tracePostMortem));
 
printf("Valeur de address: 0x%x\n",address);
printf("Valeur de pmAddress:0x%x   pmBaseAddress:0x%x\n",pmAddress,pmBaseAddress);
pmAddress = pmBaseAddress + (indexBuf * (sizeof(tracePostMortem)) % sizeof(TaskInfoBuf));
printf("Valeur de pmAddress:0x%x   pmBaseAddress:0x%x\n",pmAddress,pmBaseAddress);
Donc je récupère l'adresse de début d'un fichier nvm(Non volatile memory) qui a pour valeur 0xffe09bc.
Je désire écrire l'entiéreté d'une structure à partir de l'address de base du fichier à l'aide memcpy.
memcpy retourne un pointeur sur la destination. Déjà, cette valeur est différente et j'obtiens address = 0x2d18e8.
Outre ce fait, les variables pmAddress et pmBaseAddress sont nulles une fois la fonction memcpy exécutée. Pourquoi cela? Surtout que je ne touche jamais à pmBaseAddress...

Le résultat des printf:
Valeur de pmBaseAddress: 0xffe09bc
Valeur de pmAddress:0xffe09bc pmBaseAddress:0xffe09bc
Valeur de address: 0xffe09bc
Valeur de address: 0x2d18e8
Valeur de pmAddress:0x0 pmBaseAddress:0x0
Valeur de pmAddress:0x20 pmBaseAddress:0x0
Merci de votre aide car j'ai vraiment du mal à comprendre d'où vient le problème.

Bonne soirée.

Nicolas