C/C++语言里面的空间节省
来源:互联网 发布:淘宝延长付款时间多久 编辑:程序博客网 时间:2024/05/22 09:05
我们知道在一个结构体当中,往往为了节省内存空间,会花点心思进行字节对齐。
然而往往为了更细化,可使用bool(c++)或者enum获得更小的容器来节省空间,但是1个字节已经成为下限,如果有8个成员变量,取值范围是1和0的话,也需要8个字节,如果节省更多的空间呢?
C经典语法类型,表示bit方式可以如下:
typedef struct __aligning针对上面的struct:aligning1,我们使用sizeof计算会得到12个字节,显然没有符合4字节对齐的方式,以下写法更为科学:
{
unsigned short n;
unsigned int m;
unsigned short x;
} aligning1;
typedef struct __aligning此时struct会占用8个字节。
{
unsigned short n;
unsigned short x;
unsigned int m;
} aligning2;
然而往往为了更细化,可使用bool(c++)或者enum获得更小的容器来节省空间,但是1个字节已经成为下限,如果有8个成员变量,取值范围是1和0的话,也需要8个字节,如果节省更多的空间呢?
C经典语法类型,表示bit方式可以如下:
typedef struct __aligning这样最多也就4个字节,其实4个字节可以最多表示32个成员变量,每个变量1bit;
{
unsigned n:1;
unsigned m:1;
...
unsigned t:1;
} aligning3;
再结合实际情况,用实际的最大值,结合字节对齐,就可以节省更多的内存空间,大家在工程中不妨试试哟!
原文地址:http://my.huhoo.net/archives/2009/07/cc.html
- C/C++语言里面的空间节省
- C语言写getline(节省空间)
- 【C语言】C语言里面的冒号
- C语言里面的冒号
- C语言里面的&和*的理解
- c语言里面的宏定义
- C 语言里面的多态
- C语言里面struct的位分配
- c语言宏里面#号的作用
- gfortran里面调用c语言的代码
- c语言宏里面#号的作用
- C语言里面堆栈的区别
- C语言里面的栈和堆
- 关于C语言里面的time
- C语言里面的 malloc 函数
- C语言里面邻接表的创建
- c语言里面的部分函数
- C语言里面,四舍五入的原理
- 系统功能结构图
- 孙鑫VC++深入详解:Lesson7 Part1---模态对话框,非模态对话框,静态文本控件的访问
- Android(Java):adb与linux命令
- Core文件作用、设置及用法
- Linux Shell -- 无网不利
- C/C++语言里面的空间节省
- 黑马程序员——SQL Server 基础 笔记
- Centos6.3上安装VLC播放器
- Linux下多线程查看工具(pstree、ps、pstack)
- 题目1202:排序
- 二分查找法
- verilog实现占空比为1/2的奇数分频电路
- 黑马程序员——委托概述
- 数字签名