结构成员在内存中并不一定按字节连续存储,这句话怎么理解,具体形象点

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:51:51
结构成员在内存中并不一定按字节连续存储,这句话怎么理解,具体形象点,举例子还有给点你的经验给我,还有以后遇到这类说明要用什么方法去理解
逻辑上内存连续和物理实质上内存不连续这个可以理解,但是想问一下,它说按字存储边界对齐是怎么回事
如struct Example{char c;int i;}sample1.sample2;
你们说说看这两个结构sample1.sample2在内存中的存储情况,特别在说是什么字边界的时候一片模糊

内存比做一个货架,结构成员比做货物的话。每次进货并不是都放在一起的,而是看货物属于什么类别分到不同的货架。看货单时,货物都在一起但实际上并不是在一起的。结构成员则是被内存分到各个空闲的区域。逻辑上在一起,但物理上并不是放在连续的物理空间里。内存是划分成不同区域的增加处理速度

每一个内存单元都是有一个地址的(用十六进制表示),就像一本书每一页都有一个页码一样。
而往往一个完整的程序或数字内容占用的内存数量大于一个内存单元,就像书中的一个章节往往不是一页能写下,而是要好几页才能记述完整。
那么很显然,如果这个章节的内容在书中一般都是在连续的几页中完成,目录中就通常表述为:第**章为P1~Pn(第1页到第n页),计算机中也是,一个结构成员可以是用一个连续的内存单元集合来存放,如从内存地址:AAA1~AAAA之类。
但是结构成员在内存中并不一定按字节连续存储的意思就是,书中一个章节的内容不写在一个连续的页面内,可能是第一页写一点,然后在第五页再写一点,再到第**页写一点…… 但是,在目录中,还是能够很容易查到这一章内容到底写在了哪里
不知道你能否理解?