Veja quais dados contêm uma variável que atribuiu uma estrutura a ela
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
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.