我正在用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;
}
答案 0 :(得分:2)
在C ++中,布尔变量总是返回1
的{{1}}和true
的{{1}}。您获得不同值的事实意味着内存损坏,或者您没有获得布尔值。
我的投票是第二次。如果对象的定义在两个不同的源文件中不同,则对象的内存布局可能会发生变化,并且您将获得对象的一部分,该部分与写入的值不对应。
对象布局的不匹配可能以不同的方式引起。一些常见的:
0
宏导致成员的类型不同。