布尔返回 24

bool returning 24

本文关键字:返回 布尔      更新时间:2023-10-16

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

库代码

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;
}

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

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

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

  • 两个源文件之间的不同结构填充设置。
  • 不同的 typedefs 或 #define 宏导致成员的不同类型。
  • 在一个源与另一个源中计算不同的条件宏。