我是 C++ 新手,对全局变量有一个问题。我在许多示例中看到全局变量是带有堆地址的指针。所以指针位于全局/静态变量的内存中,地址后面的数据位于堆上,对吗?
相反,您可以声明存储数据的全局(无指针)变量。因此,数据存储在全局/静态变量的内存中,而不是存储在堆上。
与第一个使用指针和堆的解决方案相比,这个解决方案有什么缺点吗?
Edit:
第一个解决方案:
//global
Sport *sport;
//somewhere
sport = new Sport;
第二种解决方案:
//global
Sport sport;
将数据存储在全局/静态变量中的缺点是,大小在编译时是固定的,并且不能更改,这与堆存储不同,堆存储的大小可以在运行时确定,并在运行过程中反复增大或缩小。全局/静态变量的生命周期也固定为程序从开始到结束的完整运行,而不是在堆存储中,在堆存储中可以在整个程序运行时获取和释放(甚至重复)变量。另一方面,全局和静态存储管理均由编译器为您处理,而堆存储必须由您的代码显式管理。综上所述,全局/静态存储更容易,但不如堆存储灵活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)