单例模式中释放问题

opencv2008 2014-04-17 04:57:55
今天遇到一个这样的问题,无解啊:
游戏中 我写了一个单例模式,大致代码:
class singleton
{
public:
static singleton* GetSingleton()
{
static singleton t ;
return &t ;
}
void loadConfig();
void release();
private:
std::vector<int> m_vec ;
singleton(void);
~singleton(void);
};


游戏关闭的时候 竟然在析构函数中宕机 ,找了半天不知道哪里出了问题,后面就修改GetSingleton()函数的实现在cpp文件中,就没问题。
两份汇编代码中不同的地方在于汇编中静态局部变量的地址 如果不使用内联的话 变量地址是固定的值 $s45,使用内联的话变量地址是一个‘singleton::GetSingleto’::'2' ::$s78

编译器使用VS2003,两份代码在debug下面都没问题,在release内联函数的发现会出问题

求赐教
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
就想叫yoko 2014-04-19
  • 打赏
  • 举报
回复
DCL~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
opencv2008 2014-04-17
  • 打赏
  • 举报
回复
引用 3 楼 mujiok2003 的回复:
你可以在构造函数与析构函数处加一点调试信心,追踪singleton的声明周期。
游戏太大了 调试不方便 外面又付现不了。~~
mujiok2003 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
那肯定的,放头文件里被多个.cpp包含,那就是每个.cpp里一个static变量,彼此独立的。
那不可能的.
mujiok2003 2014-04-17
  • 打赏
  • 举报
回复
你可以在构造函数与析构函数处加一点调试信心,追踪singleton的声明周期。
opencv2008 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 qq120848369 的回复:
那肯定的,放头文件里被多个.cpp包含,那就是每个.cpp里一个static变量,彼此独立的。
静态局部变量在函数里面,怎么会每个头文件创建一个呢?只有在函数调用的时候才会 初始化静态的啊
qq120848369 2014-04-17
  • 打赏
  • 举报
回复
那肯定的,放头文件里被多个.cpp包含,那就是每个.cpp里一个static变量,彼此独立的。

64,652

社区成员

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

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