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

我们知道在一个结构体当中,往往为了节省内存空间,会花点心思进行字节对齐。
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;
再结合实际情况,用实际的最大值,结合字节对齐,就可以节省更多的内存空间,大家在工程中不妨试试哟!

Categories

| | 评论(0)

发表评论

May 2010

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

关于此日记

此日记由 Cnangel 发表于 July 22, 2009 11:50 AM

此Blog上的上一篇日记白话搜索引擎

此Blog上的下一篇日记项目框架设计模式

首页归档页可以看到最新的日记和所有日记。

归档

Powered by Movable Type 5.02