我创建了2个复杂类型的BitsByte变量指针,并将它们初始化为nullptr。一个将保存单词的高位字节,另一个将保存单词的低位字节。
// File: BitsWord.h
class BitsWord
{
private:
int value;
int bits[16] = {};
BitsByte* mLower{nullptr};
BitsByte* mUpper{nullptr}; ...
我有一个setValue函数,用来将mUpper和mLower设置为value的前两个字节,这将把十进制数转换成名为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));
}
我想在mLower传递值时调用setValue函数。调试器显示线程1:当我试图将mLower设置为值的前8位时,Xcode上的EXC_BAD_ACCESS(代码=1,地址=0x0)。
*mLower = value; setValue(value);
1条答案
按热度按时间z31licg01#
您需要在以下行之前为mLower分配内存:
应首先创建BitsByte的示例,然后在调用setValue()函数之前分配指针mLower以指向该示例。