我刚刚问了另一个关于bitset的问题,结果证明这是VS2010中的一个错误 bitsets in C++ using VS2010
但是在更改我用于bitset的构造函数时,我遇到了另一个问题(如另一个问题的编辑中所述)
当使用bitset的默认构造函数时,它不会被初始化为0,而是被设置为
[8](0,0,0,0,1,1,0,1)
_p.to_ulong()
返回1390560944
这是代码
class Flags
{
private:
//List of 8 bits
std::bitset<8> _p;
public:
Flags();
}
Flags::Flags()
: _p()
{}
我也尝试使用: _p(32)
,但这导致相同的位设置如上,但to_ulong()
返回的值为1437615792
发生了什么事?
编辑:这是在VS2010 SP1 64位编译,作为32位程序
编辑2:
在下面的评论中,我说我可以在一个简单的程序中复制它 - 我能够两次但是从那以后它每次都很好 - 也许我只是很慢,是漫长的一天。
在我的另一个项目(我正在尝试的模拟器)中,我将其缩小为一些函数指针数组。如果我拿出他们被分配值的地方,那么我不会有任何躲闪的行为,这些阵列可以在这里看到
该代码将无法编译,因为内存寻址函数将不存在,并包含那些我必须包含一堆其他类等等。但为什么将值赋值给函数指针数组会影响a的值位集合?在调用init()
答案 0 :(得分:0)
解决了它
我有这个数组(注意索引)
void (MPU::*_STY[0x94])(BIT_8 ** pSource, const BIT_8 args[]); // STY
这是在我的作业列表中(注意索引)
_STY[0x94] = &MPU::ZeroPageX_SourceOnly;
我想我刚刚吸取了教训