议论-局部静态变量的使用
讨论-局部静态变量的使用!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段。