Bir yapı atayan bir değişkeni tutan veriyi pas
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
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.