首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

议论-局部静态变量的使用

2013-12-10 
讨论-局部静态变量的使用!class Singleton{public:Singleton& GetInst(){static Singleton m_instreturn

讨论-局部静态变量的使用!


class Singleton
{
public:
    Singleton& GetInst()
    {
         static Singleton m_inst;
         return m_inst;
    }
private:
    Singleton();
}

我做了测试,发现这个局部静态变量返回后也还是可以可以使用的,没发现什么问题。我有俩问题:
问题1: 大家觉得这样使用局部静态变量有没有什么隐患?
问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了?
问题3: 局部静态变量的内存分配和生命周期是怎样?
[解决办法]
1 不考虑多线程的话 没问题
2 本质上没区别
3 第一次执行到声明时构造,程序退出时销毁
[解决办法]
问题1: 大家觉得这样使用局部静态变量有没有什么隐患?
没啥隐患。

问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了?
局部变量只能在当前模块或者函数中使用,全局变量的作用域是整个工程文件可见。

问题3: 局部静态变量的内存分配和生命周期是怎样?
声明周期至程序结束,系统收回!
[解决办法]
问题1: 大家觉得这样使用局部静态变量有没有什么隐患?
一般没有隐患,使用局部静态最大用处是记忆历史,但是如果函数用于多线程,可能会有问题,函数将有可能是不可重入

问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了?
有区别,全局静态的话,任意函数都可以访问和修改,但局部静态只有定义它的函数能

问题3: 局部静态变量的内存分配和生命周期是怎样? 
和程序同寿命

[解决办法]
楼上回答的很全面啊

问题3: 局部静态变量的内存分配和生命周期是怎样?
--我就说一下内存分配吧,如果初始化了加载的时候会放到data段,如果未初始化会放到bss段。

热点排行