C/C++中结构体定义的效率与内存浪费问题 的 理解与分析

本文分析了C/C++中结构体内存浪费的问题,指出编译器根据最大变量对齐内存,可能导致空间冗余。通过实例解释了这种内存布局有利于32位CPU的一次性读取,从而提高效率。读者可以借此理解结构体内存分布的原理。
摘要由CSDN通过智能技术生成

首先,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 读取第一种储存方式的时候,要进行两次读取,才能过完全读取想要读取的数据,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值