การเข้าใจว่าข้อมูลถูกเก็บไว้ในหน่วยความจํานั้น จําเป็นอย่างยิ่งสําหรับการเขียนโปรแกรมที่มีประสิทธิภาพใน C และ C++ โครงสร้างและสหภาพเป็นประเภทพื้นฐานที่มีผลต่อการจัดรูปแบบและขนาดหน่วยความจํา บทความนี้อธิบายว่าหน่วยความจําถูกจองไว้สําหรับชนิดของข้อมูลเหล่านี้อย่างไร และวิธีการคํานวณขนาดของมันอย่างถูกต้องได้อย่างไร
การจัดวางหน่วยความจําของโครงสร้าง
โครงสร้างใน C และ C+ เป็นชุดตัวแปร ซึ่งอาจจะเป็นชนิดที่แตกต่างกัน จัดกลุ่มกันโดยใช้ชื่อเดียว โครงสร้างการเรียงตามตําแหน่งหน่วยความจําสําหรับโครงสร้าง โดยวางสมาชิกแต่ละตัวให้เรียงตามสัดส่วน โดยเป็นไปได้ที่จะเรียงตามความต้องการการเรียงตามตําแหน่ง
ขนาดทั้งหมดของโครงสร้างคือผลรวมของขนาดของสมาชิก บวกกับแผ่นที่เพิ่มเข้ามาในการจัดตําแหน่ง การปัดแผ่นทําให้สมาชิกแต่ละที่อยู่เริ่มที่ตําแหน่งได้ลงตัวตามขนาดหรือความต้องการจัดตําแหน่ง
การจัดวางหน่วยความจําของสหภาพ
สหภาพคล้ายคลึงกับโครงสร้าง แต่แตกต่างกันในการจัดวางหน่วยความจํา สมาชิกทั้งหมดของสหภาพมีพื้นที่หน่วยความจําร่วมกัน ซึ่งมีขนาดเท่ากับสมาชิกที่มากที่สุดของสหภาพ ซึ่งทําให้ข้อมูลหลากหลายชนิด สามารถครอบครองตําแหน่งหน่วยความจําเดียวกันได้
ขนาดของสหภาพถูกกําหนดโดยสมาชิกที่มากที่สุด บวกความเป็นไปได้ในการปูเรียง การเขียนถึงสมาชิกคนหนึ่งมีผลต่อข้อมูลสมาชิกอื่น ๆ สหภาพจึงถูกใช้สําหรับการแบ่งปันข้อมูลที่มีคุณภาพหน่วยความจํา
กําลังคํานวณขนาดข้อมูล
การ คํานวณ ขนาด ของ โครง สร้าง และ สหภาพ รวม ตัว กัน เกี่ยว ข้อง กับ การ รวม ตัว ของ สมาชิก แต่ ละ คน และ พิจารณา การ ปู เรียง.
ตัว อย่าง เช่น ลอง พิจารณา โครง สร้าง ที่ มี [FLT: 0] และ [FLT: 1) ขนาด ของ โครง สร้าง นั้น ขึ้น อยู่ กับ ขนาด ขนาด และ แผ่น พับ ที่ เพิ่ม เข้า มา เพื่อ จัด ระเบียบ.
- ใช้ [FLT: 0] izesof เพื่อกําหนดขนาดรวม.
- ขอ พิจารณา ข้อ เรียก ร้อง ใน การ จัด ระเบียบ สําหรับ สมาชิก แต่ ละ คน.
- บัญชีสําหรับการรวบรวมเพิ่มโดยผู้รวบรวม
- จําไว้ว่าสหภาพความทรงจําร่วมกันในหมู่สมาชิกทั้งหมด