[C/C++] 函数局部变量必须初始化或显式赋值

前言:

编码时经常会遇到 IDE 对于 “变量未初始化” 的警告,我们不应当忽略此警告,有些时候未初始化的局部变量可能包含了非法值。

 

为什么局部变量要初始化?

局部变量的分配和释放:局部变量存在于栈内存区,一个进程有一个全局栈,如果比较熟悉汇编就知道栈空间的分配是通过移动栈顶指针来实现的。

进入某个函数时,栈顶指针会向低地址移动,移动出来的空间就是当前函数私有的栈帧空间,这部分空间就是用来存储局部变量的,当函数返回时,栈顶指针会掉过头来移动,而移动距离也就是函数的栈帧空间,这也就是局部变量的释放过程。

也就是说,从栈上分配和释放空间的过程就是局部变量创建和销毁的过程。

可见这个过程并没有做任何初始化动作,因此如果下一次函数调用还是使用刚才的栈,那么很有可能导致局部变量内的空间中有上次残留的数据,进而造成错误值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值