一种节省空间的想法:| 动态位域 |
众所周知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;
...........................
从头到尾巴改写你所需要的任何运算,应该就可以了吧。