动态库中不推荐使用static变量

本文讨论了static变量的生命周期,特别是当这些变量定义在DLL中时的行为。解释了static变量的初始化时机及其与组件的关系,强调了由此可能引起的移植性和BUG问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 关于static变量的生命周期。一般来说:static声明的变量初始化,只是在程序运行的第一次被执行。不过有例外,那就是如果该变量定义在dll 内,那么该变量的初始化工作是在dll被装载时执行,在这种情况下,程序虽然只运行一次,但是该静态变量可能会被初始化好几次(与dll被装载的次数有 关). 这个问题本质上是:static声明的变量的生命周期与包含它的组件相关。从这个意义上,我们可以说,static变量在不同的包含组件(EXE或 DLL)上表现出不同行为,移植能力差,容易造成BUG,这样的BUG也不容易发现。我们在开发程序的时候,不可能去假设该静态变量是被包含在什么样的组 件里。我想,这也是一个不鼓励使用static变量的一个重要原因。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值