ohcto | Sve@r a écrit :
C'est quoi les types de B, C et D (je présume que A est de type int) ?
|
B, C et D c'était pour simplifier, la fonction en elle même c'est ça :
Code :
- void pram_read_SA( sector_lst *memory,
- mt_lst *mapping_table,
- unsigned int *last_ic,
- // cache
- struct cacheline_SA *cache,
- struct cache_spec cache_spec_SA,
- unsigned char *hit,
- // input
- unsigned int trace_addr,
- unsigned char trace_size,
- // output
- unsigned char *n_read,
- unsigned char *n_read_OV,
- unsigned char *n_set_OV,
- unsigned char *n_reset_OV,
- unsigned char *read_acc,
- unsigned char *write_acc,
- // parameter
- unsigned char disp_on,
- FILE *fpW,
- // debug
- unsigned int *var )
|
et voici son appel :
Code :
- pram_read_SA(&mem_SAA,
- &mt_SAA, &last_ic_SAA,
- cache_SAA, cache_spec_SAA, &hit_SAA,
- trace_addr, trace_size,
- &n_read[3],
- &n_read_OV[3], &n_set_OV[3], &n_reset_OV[3],
- &read_acc[3], &write_acc[3],
- disp_on & SHOW_SAA, fpW,
- &last_ic_FNW );
|
Sve@r a écrit :
J'espère que le tableau cache_SA est de taille suffisante (au-moins 5 struct cacheline_SA) !!!
|
comment ça ?
le tableau cache_SA est déclaré ainsi :
Code :
- struct cacheline_SA cache_SAB[4];
|
.................................. je crois que je viens à l'instant de trouver mon erreur (en rouge) !!
Sve@r a écrit :
T'as vu que ton cache_SA[4].tag est à 12 octets de A ??? Je me demande où vont aller value, dirty et active... je crois que j'aurais du mettre 512 et j'ai mis 4
|
Sve@r a écrit :
De toute façon tu décris ici un cas typique de comportement indéterminé. Style t'as alloué 10 et tu remplis 11. Déjà mis à part mes questions précédentes, si on pouvait avoir le code de "fonction" ce serait un plus. J'espère aussi que A n'est pas une variable globale (ni aucune autre d'ailleurs)...
|
vi, ton diagnostic était le bon
non, A n'est bien sûr pas globale...
j'utilise pas malloc  Message édité par ohcto le 22-05-2010 à 21:58:11
|