结构体封装方案解决数组、嵌套火山视窗源码结构体本质上是一串基础类型数据的集合,那么理论上我们可以通过指针和基本类型数据在内存里自己造出所有结构体来。
但其中存在一个问题,就是结构体在内存上并非连续存储,在某些时候,两个成员之间,会存在一些空位。
网上针对结构体内存的讲解,不算错,但大多非常复杂且弱智。我这里讲一下我的理解,不一定对,但目前没出错,姑且算是对的。
我们先将一串内存想象成几个内存块
000000000000000000000000000000000000000000000000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
数组因为每个成员的尺寸是一样的,所以一个块对应一个成员。而每个块的尺寸是成员的尺寸。
结构体每个成员的尺寸是不同的,所以采用的是一个块对应数个成员的原则。每个块的大小由最大的成员决定。
在计算内存位置的时候,首先将成员尺寸依次相加放入一个块中,直到溢出(也就是成员的和大于块了),这时将导致溢出的成员拿出来,放入下一个块中。
然后就完了,一个结构体就造好了。
嵌套的有点不同,它的块大小,是由基础成员决定,但在创建的时候,会将子结构体算作一个成员
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系贝贝进行处理。本站默认解压密码:www.hibbba.com
评论(0)