我有一些单例类(请不要谈论单例用法)。
class InputSystem : boost::serialization::singleton<InputSystem>
{
private:
boost::shared_ptr<sf::Window> mInputWindow;
public:
InputSystem()
{
mInputWindow = boost::shared_ptr<sf::Window>( new sf::Window(someARgs) );
someMethod();
}
void someMethod()
{
mInputWindow->...() // Calling some methods of sf::Window class
// Everything is fine here
}
const sf::Input &Handle() const
{
return mInputWindow.get()->GetInput();
}
};
void main()
{
InputSystem::get_mutable_instance().Handle(); // Here is all members of InputSystem have invalid addresses in memory (0x000)
}有什么问题吗?
发布于 2010-07-19 16:39:01
此处的
是InputSystem的所有成员在内存中的地址无效(
0x000)
可能是someMethod()将您的类数据置零,也可能是您误诊了问题。
将main函数更改为:
InputSystem& inputSystem = InputSystem::get_mutable_instance();
inputSystem.Handle();这将单例的创建和第一次尝试使用它放在不同的行上。启动调试器并遍历代码,查找单例数据被破坏的确切位置。
https://stackoverflow.com/questions/3279341
复制相似问题