您的位置:程序门 -> c/c++ -> c++ 语言



一种节省空间的想法:¦ 动态位域 ¦


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一种节省空间的想法:| 动态位域 |[已结贴,结贴人:icesnowjank]
发表于:2007-08-23 13:20:00 楼主
众所周知c语言里面的位域是为了使存储0,1这些只用到一位的变量不至于浪费位数
比如:struct   a   {
                        int   a:1;
                        int   b:4;
                  ..........
                    };
但是这些个1,4什么的都是固定的,我的想法就是   能不能定义像:  
struct   a   {   int   a:n};   其中n   是预先不知道   实际当中要用多少位   等到用的时候   再进行动态分配,不知道   我这种想法可行不可行   .   .   请高手给个思路..
发表于:2007-08-23 13:26:151楼 得分:4
真的需要省这点点内存么?
给你一个建议,最好永远都不用位域。
你的想法可行,只是会更浪费内存,因为你一定还要找一个地方来保存这个n。
发表于:2007-08-23 14:24:472楼 得分:5
位域实际没有节省什么空间,只是更加直观而已,你自己可以用位操作代替。动态改变你位操作就可以任意操作32bit的信息了。如
#define   firstbit           0x01
#define   secondbit         0x02
#define   thirdbit           0x04
#define   fourthbit         0x08

a   ¦=   firstbit;       //设置位
b   &=   ~secondbit;     //取消
发表于:2007-08-23 14:26:463楼 得分:2
个人觉得
稳定性先保证,再追求这些
发表于:2007-08-23 15:06:334楼 得分:1
可以,但是过分强的机器性可能导致移植性的低下
发表于:2007-08-23 15:07:145楼 得分:2
何况这些的节省还不如多优化其它部分来得实际,除非是非常严酷的嵌入式需要
发表于:2007-08-23 15:19:306楼 得分:0
或者这样也行,有没有一种方法能节约位空间,一个变量能用到多少位,就动态的分配给他多少位   我这个程序可能要定义超多的变量,有些变量可能用的位数多,有的用的位数少,这样就浪费了   很多位空间,     我的想法就是要节约这些位空间。。
发表于:2007-08-23 15:47:087楼 得分:2
你的程序用到多少个用于标识状态的符号变量,占用了多少空间?以至于需要从这里着手节省内存空间?
发表于:2007-08-23 19:29:568楼 得分:4
动态的恐怕更加费内存,搞静态的吧,建立若干个bit类,用自己的bit内存池。
比如:
class   cbitpool;

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


快速检索

最新资讯
热门点击