Bonsoir,
Un soucis bizarre avec memcpy.
J'ai le code suivant:
Donc je récupère l'adresse de début d'un fichier nvm(Non volatile memory) qui a pour valeur 0xffe09bc.
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);
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:
Merci de votre aide car j'ai vraiment du mal à comprendre d'où vient le problème.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
Bonne soirée.
Nicolas
Partager