Une variable chaîne longue occupe quatre octets de mémoire, qui contiennent un pointeur sur une chaîne allouée
dynamiquement. Lorsqu'une variable chaîne longue est vide (contient une chaîne d'une longueur de zéro), le
pointeur de chaîne est nil et aucune mémoire dynamique n'est associée avec la variable chaîne. Pour une valeur
de chaîne non vide, le pointeur de chaîne pointe sur un bloc de mémoire alloué dynamiquement contenant la valeur
chaîne en plus d'un indicateur de longueur 32 bits et d'un compteur de références 32 bits. Le tableau suivant montre
le contenu d'un bloc mémoire de chaîne longue.
Disposition en mémoire dynamique d'une chaîne longue (Win32 seulement)
Décalage Contenu
-8 Compteur de références sur 32 bits
-4 Longueur en octets
0..Longueur - 1 Chaîne de caractères
Longueur Caractère NULL
Le caractère NULL situé à la fin d'un bloc mémoire de chaîne longue est automatiquement maintenu par le
compilateur et par les routines intégrées de gestion de chaîne. Cela permet de transtyper directement une chaîne
longue en chaîne à zéro terminal.
Le compilateur génère un bloc mémoire de même implantation qu'une chaîne allouée dynamiquement pour des
constantes et littéraux chaînes, mais avec un compteur de références de -1. Lorsqu'une variable chaîne longue est
affectée à une constante chaîne, le pointeur de chaîne se voit affecter l'adresse du bloc mémoire généré pour la
constante chaîne. Les routines intégrées de gestion de chaîne savent qu'elles ne doivent pas essayer de modifier
des blocs ayant un compteur de références de -1.
Partager