编码:
#include <iostream>
class cMapRender
{
public:
unsigned int m_rightMargin;
unsigned int m_bottomMargin;
unsigned int m_x;
unsigned int test;
unsigned int m_y;
unsigned int m_width;
unsigned int m_height;
};
int main(int argc, char **argv)
{
cMapRender mapRender;
std::cout << mapRender.m_x << std::endl; //gives random values (like 45321231)
std::cout << mapRender.m_height << std::endl;
std::cout << mapRender.m_width << std::endl;
return 0;
}
当我通过调试器运行它(或只是计算一些值)时,有些成员是 0 而有些是随机值,这怎么可能?我认为 pod 成员应该是 0 初始化的。
我在 Linux 上使用 g++ 4.7。当我在 ideone.com 上运行它时,在 gcc 4.7 上我也遇到了这个错误。但是,在 ideone.com gcc 4.3 上,每个成员都是 0 初始化的!
这里发生了什么,为什么成员并不总是 0 初始化?我读到 C 标准说 pod 应该总是 0 初始化。