Veja quais dados contêm uma variável que atribuiu uma estrutura a ela

Jan 16 2021

Se tivermos o seguinte código:

struct Person {
    age: i32
}

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

Eu sei como usar a estrutura e tudo, mas o que realmente está dentro da variável de pessoa?

É um ponteiro para o primeiro elemento da estrutura? (Porque todos os elementos são contíguos (?), Então o compilador saberá onde todos os elementos estão)

Respostas

5 Acorn Jan 16 2021 at 21:03

o que realmente está dentro da variável pessoa?

A única coisa "dentro" é age, para um total de 4 bytes.

É um ponteiro para o primeiro elemento da estrutura?

Não, não é um ponteiro. É apenas o valor em si, o que significa que será armazenado na pilha do quadro / função atual, praticamente falando (o compilador pode removê-lo totalmente da memória ou até mesmo não usá-lo, se o comportamento observável não mudar, mas que é uma otimização: conceitualmente, a variável é colocada na pilha).

(Porque todos os elementos são contíguos (?), Então o compilador saberá onde todos os elementos estão)

O compilador na maioria das linguagens compiladas sempre conhece o layout exato de todos os tipos (exceto casos especiais). Esse é o motivo pelo qual muitas otimizações podem ser feitas nesses idiomas com antecedência. Essas informações são normalmente descartadas em linguagens de programação de sistema, e é por isso que geralmente não suportam reflexão e por que é muito difícil descompilá-las de volta ao código-fonte.