class TestUnInit
{
public:
int get_c() { return c; }
int get_v() { return v; }
public:
std::string s1;
uint8_t c;
uint16_t v;
std::string s2;
};
int main()
{
TestUnInit* p = new TestUnInit();
printf("%d %d\n", p->get_c(), p->get_v());
p->c = 32;
p->v = 8889;
delete p;
TestUnInit* p1 = new TestUnInit();
printf("%d %d\n", p1->get_c(), p1->get_v());
delete p1;
}
在本测试环境Release编译结果如下:
第一次打印 0 0
第二次打印 32 8889
结论:未初始化变量的值取决于当前内存的值,所以未初始化变量的值完全是不可预知的,在实际中一定要初始化变量,不然可能会导致不可预知的莫名其妙的问题