Re: [问题] 两题C++面试题的询问

楼主: plsmaop (plsmaop)   2018-04-04 10:42:12
※ 引述《Cosmology (宇宙学型男)》之铭言:
: 2.
: struct test
: {
: int a;
: char b;
: short c;
: double d;
: char e;
: };
: test这个大小是多少?
: 我可以理解关于内存对齐的问题
: 所以我答总共是24 bytes
: 面试官接着问为什么是24 以及那他们在系统内的内存位置是如何?
: 我回答
: int 4
: char 4(对齐后)
: short 4(对齐后)
: double 8
: char 4(对齐后)
: 所以总共是24 (我的概念可能有错...)
: 他说24是对的 但是位置的概念不正确 叫我回去测试看看
: 我回家测试(以下都起始位置)
: a 9435088
: b 9435092
: c 9435094
: d 9435096
: e 9435104
: 我理解可能char short那边可能答错了
: 但是即便是这样 e那个位置对齐以后末三码应该是108
: 88到108应该也是20个bytes阿...
: 有前辈可以指点我哪里概念有错误吗?
: 或是能够提供方向让我找资料 谢谢
https://en.m.wikipedia.org/wiki/Data_structure_alignment
在Typical alignment of C structs on x86这个条目下有说,会把整个struct凑成其中
最大的type的大小的倍数
如果我没有理解错的话,整个struct大小会是8*3=24
Int 4
Char 1 ,塞一个1 ,short 2
Double 8
Char 1,塞7个
作者: descent (“雄辩是银,沉默是金”)   2018-04-04 23:34:00
感谢分享
作者: friends29 (凉哥哥)   2018-04-05 16:22:00
我也是把char算1 byte欸

Links booklink

Contact Us: admin [ a t ] ucptt.com