首先,C/C++中结构体中变量的随意定义会浪费内存空间,主要是由于编辑器的特性和结构体的特性:
在结构中,结构体为各个变量分配的内存大小
是根据结构体中占内存最大的变量所确定的。
struct A
{
int a;
char c;
};
比如struct A 中 有一个 int a,与 char c 而 在32位机子中的VC6.0中,int 所占的内存为4个字节(与float相同)
而 char c 只占用一个字节,编译器则会将其大小,自动与结构体中的最值对齐,这样,就产生了内存浪费现象,那么,为什么编译器要做这样的操作呢?
理下面的这样图可以帮助理解:
tips:1个字节 等于 8 位
对于这个问题,很显然,第二种内存地址的利用方式 效率 比较高。
当CPU 读取第一种储存方式的时候,要进行两次读取,才能过完全读取想要读取的数据,
而