c++ 使用未初始化的内存_C 语言未初始化的局部变量是多少?

C语言中,未初始化的局部变量的值是不确定的,取决于内存位置和之前是否有store操作。通过实验发现,操作系统可能返回零页,而函数返回时不会清理栈帧数据,导致下个函数调用时,未初始化的局部变量可能保留前次的数据。因此,应始终初始化局部变量以确保其值的确定性。
摘要由CSDN通过智能技术生成

3fa683d51269f07bb4551d1215cc7a1b.gif

02022b84315ab1b052d82cbb77413b50.png

作者 | dog250 责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客

C语言中,未初始化的局部变量到底是多少?

答案往往是:

  • 与编译器有关。

  • 可能但不保证初始化为0。

  • 未确定。

总之,全部都是些一本正经的形而上答案,这很令人讨厌。

但凡一些人给你滔滔不绝地扯编译器,C库,处理器体系结构却给不出一个实际场景复现问题的时候,这人大概率在扯淡。

其实,这个问题本身就是错误的问法,说全了能讲10万字,我们只要能在特定场景下确定其特定行为就OK了,当然,这就需要设计一个比较OK的实验。

在演示一个实际代码行为之前,先给出一个知识, CPU不认识变量,更无法识别变量的名字,CPU只会从特定的内存位置取值或者将值存到特定的内存位置&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值