首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一种节省空间的想法:| 动态位域 |,该如何处理

2012-03-04 
一种节省空间的想法:| 动态位域 |众所周知C语言里面的位域是为了使存储0,1这些只用到一位的变量不至于浪费

一种节省空间的想法:| 动态位域 |
众所周知C语言里面的位域是为了使存储0,1这些只用到一位的变量不至于浪费位数
比如:struct   A   {
                        int   a:1;
                        int   b:4;
                  ..........
                    };
但是这些个1,4什么的都是固定的,我的想法就是   能不能定义像:  
struct   A   {   int   a:n};   其中n   是预先不知道   实际当中要用多少位   等到用的时候   再进行动态分配,不知道   我这种想法可行不可行   .   .   请高手给个思路..

[解决办法]
真的需要省这点点内存么?
给你一个建议,最好永远都不用位域。
你的想法可行,只是会更浪费内存,因为你一定还要找一个地方来保存这个n。
[解决办法]
位域实际没有节省什么空间,只是更加直观而已,你自己可以用位操作代替。动态改变你位操作就可以任意操作32bit的信息了。如
#define FIRSTBIT 0x01
#define SECONDBIT 0x02
#define THIRDBIT 0x04
#define FOURTHBIT 0x08

a |= FIRSTBIT; //设置位
b &= ~SECONDBIT; //取消
[解决办法]
个人觉得
稳定性先保证,再追求这些
[解决办法]
可以,但是过分强的机器性可能导致移植性的低下
[解决办法]
何况这些的节省还不如多优化其它部分来得实际,除非是非常严酷的嵌入式需要
[解决办法]
你的程序用到多少个用于标识状态的符号变量,占用了多少空间?以至于需要从这里着手节省内存空间?
[解决办法]
动态的恐怕更加费内存,搞静态的吧,建立若干个bit类,用自己的bit内存池。
比如:
class CBitPool;

class C1BitInt;
class C2BitInt;
class C3BitChar;
...........................
从头到尾巴改写你所需要的任何运算,应该就可以了吧。

热点排行