我创建了 2 个复杂类型
BitsByte
变量指针,并最初将它们设置为 nullptr
。一个将保存该字的高字节,另一个将保存该字的低字节。
// File: BitsWord.h
class BitsWord
{
private:
int value;
int bits[16] = {};
BitsByte* mLower{nullptr};
BitsByte* mUpper{nullptr}; ...
我有一个
setValue
方法将 mUpper
和 mLower
设置为值的前两个字节,该值会将十进制数转换为名为 bits 的数组中的二进制数。
// BitsWord.cpp
void BitsWord::setValue(int value)
{
for(int i = 0; i < 16; i++)
{ bits[i] = static_cast<bool>(value & (1 << i)); }
reverse(begin(bits), end(bits));
}
我想在
setValue
传递值时调用 mLower
方法。当我尝试将 mLower 设置为值的前 8 位时,调试器在 Xcode 上显示线程 1: EXC_BAD_ACCESS (code=1, address=0x0)
。
*mLower = value; setValue(value);
您需要在此行之前为 mLower 分配内存:
*mLower = value;
您应该首先创建 BitsByte 的实例,然后在调用 setValue() 函数之前分配指针 mLower 指向该实例。