全局变量的缺点:
长期占用内存:全局变量生命周期长,程序运行期一直存在,始终占有那块存储区;
难以定位修改:全局变量是公共的,全部函数都可以访问,难以定位全局变量在哪里被修改,加大了调试的难度;
使函数难以理解:使用全局变量的函数,需要关注全局变量的值,增加了理解的难度,增加了耦合性;
初始化顺序:全局变量的初始化顺序不定,如果全局变量之间有依赖,有可能导致某些变量初始化失败呢,引起莫名其妙bug。
污染命名空间:全局变量会污染命名空间,在函数中局部变量会覆盖全局的值,会出现同一个变量名多个值的情况,造成困惑;
增加耦合性:修改全部变量会影响所有用到它的模块,不利于调试;
线程不安全:多线程中多全局变量的修改容易冲突,需要加锁;