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

chuachua66 2013-12-06 03:50:25

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

我做了测试,发现这个局部静态变量返回后也还是可以可以使用的,没发现什么问题。我有俩问题:
问题1: 大家觉得这样使用局部静态变量有没有什么隐患?
问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了?
问题3: 局部静态变量的内存分配和生命周期是怎样?
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-12-06
  • 打赏
  • 举报
回复
1 多线程读写的话,还是有问题的!单线程的话没啥问题的! 2 差不多!只不过全局变量可以extern出去其他文件使用,局部静态就不行了,只能本文件中使用 3 运行期分配构造,程序结束销毁
signforlin 2013-12-06
  • 打赏
  • 举报
回复
楼上回答的很全面啊 问题3: 局部静态变量的内存分配和生命周期是怎样? --我就说一下内存分配吧,如果初始化了加载的时候会放到data段,如果未初始化会放到bss段。
worldy 2013-12-06
  • 打赏
  • 举报
回复
问题1: 大家觉得这样使用局部静态变量有没有什么隐患? 一般没有隐患,使用局部静态最大用处是记忆历史,但是如果函数用于多线程,可能会有问题,函数将有可能是不可重入 问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了? 有区别,全局静态的话,任意函数都可以访问和修改,但局部静态只有定义它的函数能 问题3: 局部静态变量的内存分配和生命周期是怎样? 和程序同寿命
漫步者、 2013-12-06
  • 打赏
  • 举报
回复
问题1: 大家觉得这样使用局部静态变量有没有什么隐患? 没啥隐患。 问题2: 如果这么使用局部静态变量是不是就和全局变量没有区别了? 局部变量只能在当前模块或者函数中使用,全局变量的作用域是整个工程文件可见。 问题3: 局部静态变量的内存分配和生命周期是怎样? 声明周期至程序结束,系统收回!
  • 打赏
  • 举报
回复
1 不考虑多线程的话 没问题 2 本质上没区别 3 第一次执行到声明时构造,程序退出时销毁

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧