Dépendances de chaînes
Remonter à Conversions de chaînes en PChar
Il est parfois nécessaire de convertir des chaînes longues en chaînes à zéro terminal, par exemple si vous utilisez une fonction qui attend un PChar. Si vous devez transtyper une chaîne en PChar
, sachez que vous êtes responsable de la durée de vie du PChar
résultant. Comme les chaînes longues utilisent le comptage de références, le transtypage d'une chaîne en un PChar
augmente de un les dépendances de la chaîne sans augmenter également le compteur de références. Quand le compteur de références atteint zéro, la chaîne est détruite même s'il y a encore des dépendances portant dessus. Le transtypage en PChar
disparaît également, et ce alors même que la routine à laquelle vous l'avez transmis l'utilise peut-être encore. Par exemple :
procedure my_func(x: string);
begin
// faire quelque chose avec x
some_proc(PChar(x)); // transtype la chaîne en PChar
// vous devez maintenant garantir que la chaîne existe
// tant que la procédure some_proc a besoin de l'utiliser
end;