Rust quelles données contiennent une variable qui lui a assigné une structure

Jan 16 2021

Si nous avons le code suivant:

struct Person {
    age: i32
}

fn main() {
    let person =  Person{age : 52};
}

Je sais comment utiliser la structure et tout sauf quoi à l'intérieur de la variable person?

Est-ce un pointeur vers le premier élément de la structure? (Parce que tous les éléments sont contigus (?), Le compilateur saura où se trouvent tous les éléments)

Réponses

5 Acorn Jan 16 2021 at 21:03

qu'est-ce que réellement à l'intérieur de la variable personne?

La seule chose "à l'intérieur" est age, pour un total de 4 octets.

Est-ce un pointeur vers le premier élément de la structure?

Non, ce n'est pas un pointeur. C'est juste la valeur elle-même, ce qui signifie qu'elle sera stockée dans la pile de la trame / fonction courante, pratiquement parlant (le compilateur peut la supprimer entièrement de la mémoire ou même ne pas l'utiliser, si le comportement observable ne change pas, mais que est une optimisation: conceptuellement, la variable est placée dans la pile).

(Parce que tous les éléments sont contigus (?), Le compilateur saura où se trouvent tous les éléments)

Le compilateur dans la plupart des langages compilés connaît toujours la disposition exacte de tous les types (sauf cas particuliers). C'est la raison pour laquelle de nombreuses optimisations peuvent être effectuées à l'avance dans ces langues. Ces informations sont normalement ignorées dans les langages de programmation système, c'est pourquoi ils ne prennent généralement pas en charge la réflexion et pourquoi il est assez difficile de les décompiler dans le code source.