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

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on July 22, 2009 11:50 AM.

白话搜索引擎 was the previous entry in this blog.

项目框架设计模式 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.