现在的位置: 首页 > 综合 > 正文

C/C++语言里面的空间节省

2013年10月04日 ⁄ 综合 ⁄ 共 650字 ⁄ 字号 评论关闭

我们知道在一个结构体当中,往往为了节省内存空间,会花点心思进行字节对齐。

typedef struct __aligning
{
      unsigned short n;
      unsigned int m;
      unsigned short x;
} aligning1;

针对上面的struct:aligning1,我们使用sizeof计算会得到12个字节,显然没有符合4字节对齐的方式,以下写法更为科学:

typedef struct __aligning
{
      unsigned short n;
      unsigned short x;
      unsigned int m;
} aligning2;

此时struct会占用8个字节。

然而往往为了更细化,可使用bool(c++)或者enum获得更小的容器来节省空间,但是1个字节已经成为下限,如果有8个成员变量,取值范围是1和0的话,也需要8个字节,如果节省更多的空间呢?
C经典语法类型,表示bit方式可以如下:

typedef struct __aligning
{
      unsigned n:1;
      unsigned m:1;
      ...
      unsigned t:1;
} aligning3;

这样最多也就4个字节,其实4个字节可以最多表示32个成员变量,每个变量1bit;

再结合实际情况,用实际的最大值,结合字节对齐,就可以节省更多的内存空间,大家在工程中不妨试试哟!



原文地址:http://my.huhoo.net/archives/2009/07/cc.html

抱歉!评论已关闭.