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
结论:未初始化变量的值取决于当前内存的值,所以未初始化变量的值完全是不可预知的,在实际中一定要初始化变量,不然可能会导致不可预知的莫名其妙的问题
本文通过一个C++代码示例展示了未初始化变量可能导致的不可预知结果。在释放并重新分配内存后,原来未初始化的变量值发生了变化,强调了在编程中初始化变量的必要性,以避免潜在的程序错误和难以调试的问题。
873

被折叠的 条评论
为什么被折叠?



