Offset (informatique) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.

Offset est un terme anglais qui en informatique désigne une adresse relative. L'offset est une valeur entière représentant le déplacement en mémoire, par rapport à une adresse de référence, nécessaire pour atteindre une autre adresse. Autrement dit, l'offset est la distance séparant deux emplacements mémoire.

Utilisation

Ainsi, l'offset est utilisé dans la manipulation des tableaux, ou de tout autres structures de données contiguës en mémoire.

L'unité utilisée pour calculer un offset est la plupart du temps la taille de l'élement le plus petit adressable directement ; il s'agit dans la plupart des architectures de l'octet. La position exacte d'un objet en mémoire peut se calculer simplement par la formule :

adresse absolue = adresse de base + offset * taille d'un élément

Ainsi, dans la structure suivante (en C#) :

struct exemple {
Byte  a;
Int16 b;
Int32 c;
}

l'offset de l'élément b sera de 1 octet (taille de l'élément a) ; l'offset de l'élément c sera 3 octets (taille de a plus taille de b).

Offset dans un tableau

Dans le cas d'une position relative au sein d'un tableau, l'unité de calcul sera la taille des éléments du tableau. Ainsi, le nième élément d'un tableau sera toujours à l'offset n-1 quels que soient les éléments du tableau. Le terme anglais index désigne le numéro représentant l'élément. Il correspond exactement à l'offset dans le cas de langages tels que C. Dans d'autres langages, le premier élément ne portant pas nécessairement le numéro 0, il peut exister un décalage entre l'index d'un élément et son offset.

Dans un tableau défini en Visual Basic par :

Dim tableau(2 To 5) As Integer

ou en Pascal par :

tableau: array[2..5] of Integer

l'index du troisième élément sera 4, tandis que son offset sera 2.

Page générée en 0.079 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise