Je travaille sur un système OSX 64 bits x_86 64 bits. Je lis le fichier de la base de données existante. Il est chargé dans un bloc de mémoire et utilise les décalages qu'il lit pour les structures. Il est écrit en mode 32 bits. Donc, pour lire correctement en mode 64 bits, Je souhaite ajouter n octets à l'adresse de base d'une structure.Comment ajouter n octets dans un système 64 bits
Depuis incrément pointeur incement
ne me permet pas de le faire Comme il est en mode 64 bits chaque pointeur est b octets de long.
Cordialement, Dhana.
J'ai posté un code ici. Je suppose qu'il est juste ..
struct CamNodeTag {
CamNodeTag *nextCam; // next cam
SInt32 numMake;
char *menuMake;
};
long pBaseAddr; // this is long so we an offset bytes from it.
//Get the size of of the structure in 32 bit environment.//in 64 bit envi it is 20 bytes.
int CamNodeTagSizeIn32BitMode = 12;
//Do it in a while loop..
int i=0;
CamNodeTag * pNode = (CamNodeTag *)(pBaseAddr + i*CamNodeTagSizeIn32BitMode);
while(pNode !=NULL)
{
//Do the cam stuff here..
// to get the next node, we add the base addr to the offset
//This will give next cam
i++;
pNode = (CamNodeTag *)(pBaseAddr + i*CamNodeTagSizeIn32BitMode);
}
Que diriez-vous de montrer la structure? Peut-être quelques exemples de données et le résultat attendu aussi? – wallyk
struct CamNodeTag { CamNodeTag * nextCam; // next cam SInt32 numMake; char * menuMake; }; J'ai dis 10 copies de la structure ci-dessus dans la mémoire Et j'ai l'adresse de base de la mémoire Im mémoire, il est chargé en mode 32 bits. Je veux lire une structure après une autre structure. – Dhanaraj
Je ne comprends pas - du code les a déjà chargés? Les pointeurs sont des pointeurs 32 bits valides, ou des décalages par rapport à la 'base', ou? – Will