布尔回来24

时间:2014-12-15 19:53:48

标签: c++ boolean

我正在用C ++创建一个库,并且有一个总是假的bool但是当我从另一个项目打印它时它是24。

Lib代码

void Window::update() {
    closeRequested = false;
}

其他项目

int main(int argc, char **argv) {
    init();
    wnd = new Window();

    while (1 == 1) {
        wnd->update();
        std::cout << wnd->closeRequested << std::endl;
    }

    wnd->~Window();
    end();
    return 0;
}

1 个答案:

答案 0 :(得分:2)

在C ++中,布尔变量总是返回1的{​​{1}}和true的{​​{1}}。您获得不同值的事实意味着内存损坏,或者您没有获得布尔值。

我的投票是第二次。如果对象的定义在两个不同的源文件中不同,则对象的内存布局可能会发生变化,并且您将获得对象的一部分,该部分与写入的值不对应。

对象布局的不匹配可能以不同的方式引起。一些常见的:

  • 两个源文件之间的不同结构填充设置。
  • 不同的typedef或0宏导致成员的类型不同。
  • 在一个源与另一个源中进行不同评估的条件宏。