Bir yapı atayan bir değişkeni tutan veriyi pas

Jan 16 2021

Aşağıdaki koda sahipsek:

struct Person {
    age: i32
}

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

Yapıyı nasıl kullanacağımı biliyorum ama aslında kişi değişkeninin içinde ne var?

Yapının ilk elemanına bir işaretçi mi? (Tüm öğeler bitişik olduğundan (?) Derleyici tüm öğelerin nerede olduğunu bilecektir)

Yanıtlar

5 Acorn Jan 16 2021 at 21:03

kişi değişkeninin içinde aslında ne var?

"İçerideki" tek şey age, toplam 4 bayttır.

Yapının ilk elemanına bir işaretçi mi?

Hayır, bu bir işaretçi değil. Bu sadece değerin kendisidir, yani pratik olarak geçerli çerçevenin / işlevin yığınında depolanacağı anlamına gelir (gözlemlenebilir davranış değişmezse derleyici onu tamamen bellekten kaldırabilir veya kullanmayabilir, ancak bir optimizasyondur: kavramsal olarak, değişken yığına yerleştirilir).

(Tüm öğeler bitişik olduğundan (?) Derleyici tüm öğelerin nerede olduğunu bilecektir)

Derlenen çoğu dildeki derleyici her zaman tüm türlerin tam düzenini bilir (özel durumlar hariç). Bu dillerde birçok optimizasyonun önceden yapılabilmesinin nedeni budur. Bu bilgiler normalde sistem programlama dillerinde atılır, bu yüzden genellikle yansımayı desteklemezler ve bunları kaynak koda geri dönüştürmek oldukça zordur.