Veri hafızada nasıl depolanır olduğunu anlamak C ve C++'da verimli programlama için gereklidir. Yapılar ve sendikalar hafıza düzeni ve büyüklüğü etkileyen temel veri türleridir.Bu makale, hafızanın bu veri türleri için nasıl tahsis edildiğini ve boyutlarını doğru nasıl hesaplamak için temel olduğunu açıklar.

Yapıların Belleki

C ve C++'daki yapılar değişkenlerin koleksiyonlarıdır, muhtemelen farklı türleri, tek bir isim altında birlikte gruplandırılmıştır.Bir üyenin uyumlu bir şekilde, uyum gereksinimleri karşılamak için mümkün olan ⁇ için derlemek için derlemek için derlemek için derlemek.

Bir yapının toplam büyüklüğü, üyelerinin boyutlarının artı herhangi bir ⁇ 'nin hizalama için eklendiğini garanti eder. Padding, her üyenin boyut veya uyum gereksinimi ile ilgili bir adrese geçiş yapmasını sağlar.

Unions'ın Memory Layout

Birlikler yapılara benzer, ancak hafıza tahsisinde farklı. Bir sendikanın tüm üyeleri aynı hafıza alanını paylaşıyor, bu da en büyük üyenin büyüklüğüne eşit. Bu, aynı hafıza yerini işgal etmek için birden fazla veri türü sağlar.

Bir sendikanın büyüklüğü en büyük üyesi tarafından belirlenir, artı uyum için ⁇ .Bir üyeye yazmak diğer üyelerin verilerini etkiler, bu yüzden sendikalar hafızaya verimli veri paylaşımı için kullanılır.

Data Boyutlarını Hesaplamak

Yapı ve sendikaların boyutunu hesaplamak, bireysel üyelerin boyutlarını özetliyor ve uyum için ⁇ dikkate alıyor. [Ücretsiz:0] C ve C++'daki operatör toplam büyüklüğü sunuyor.

Örneğin, bir yapı bir ÂFFT:0) ve bir dekanatın büyüklüğü, en büyük üyesinin büyüklüğüne bağlıdır.

  • [Düzücük:0) Toplam boyutu belirlemek için ).
  • Her üye için uyum gereksinimleri göz önünde bulundurun.
  • Kombine eklenen ⁇ için hesap.
  • Sendikaların tüm üyeler arasında hafıza paylaştığını unutmayın.