永发信息网

linux驱动开发使用全局变量都有哪些坏处?

答案:2  悬赏:60  手机版
解决时间 2021-03-23 09:10
  • 提问者网友:末路
  • 2021-03-22 14:42
假如全局变量定义为static,也就是说不存在不同文件之间变量名冲突的问题, 也不考虑全局变量一直占用内存空间的问题, 使用全局变量还有什么坏处么? 今天看到有人说使用全局变量出了问题会不知道从哪里找 , 然后举例子中把原来的几个全局变量定义在了一个结构体中, 在一个函数中用kalloc 函数申请该结构体大小的一个空间 。 然后在之后用到这个结构体中的变量的地方 都通过传结构体地址的方法来使用 。

我实在想不出来上面的那种解决方法有什么好处 我看了linux内核中确实有些代码是这样写的
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-03-22 15:42
即使是静态的,全局变量还是越少越好。


不光是linux,裸机上也是这样。


1. 把相关的变量放到一个结构体里,在使用时再动态划分,这样减小了代码的总体大小,因而也节省了内存。
2. 更方便调试。以前调试出现过类似的情景,因为自己写的链接脚本中未包含 common 段,出现全局变量为随机值的情况。
3. 你可能怀疑直接使用static 变量比用机构体效率更高,其实不然,结构体传来传去的参数转换都是在编译时就解决的,对运行时影响不大。
学 linux 的都是我的朋友,欢迎交流
全部回答
  • 1楼网友:佘樂
  • 2021-03-22 16:43
你好! static关键字声明的变量是静态变量,本文件内可见,不是什么全局变量。 kalloc方式是在内存堆中申请,会常驻内存 不会被系统析构所以是安全的吧。 仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯