我有一个包含一些成员类的课程。一切正常,直到我改变我定义成员的顺序。
这是有效的代码:
class Core{
public:
/// Initialization and main loop.
bool initCore(int argc, char *argv[], string dirPath);
int mainLoop();
/// Network impulse message
static void networkImpulseCallback(unsigned char* data, int length);
private:
bool _running;
string _directoryPath;
string _serverIP;
string _loginName;
string _pass;
string _myShowName;
/// System components.
ConfigurationFile _config;
ResourceParser _resourceParser;
Graphics _graphics;
Input _input;
ScriptInterpreter _scriptInt;
GUISystem _guiSystem;
EntityManager _entityManager;
/// Component threads.
thread *_netLoop;
thread *_graphLoop;
thread *_scriptLoop;
thread *_animationLoop;
thread *_physicsLoop;
/*
* Initializes the rest of the system after the login.
*/
bool _initPostLogin();
}
如果我现在放置Graphics
对象下的Input
对象,我将获得访问冲突。发生违规的地方取决于我正在移动的对象。我试图通过移动对象来找出导致错误的对象,但遗憾的是没有结果。发生违规的对象成员都是未初始化的(例如向量或互斥)。
现在,我的猜测是内存被破坏了。如果是这样,找到错误的最佳方法是什么?如果没有,问题出在哪里?
答案 0 :(得分:0)
你在Input类中有一些缓冲区吗?我猜你写的是结束并腐败了下一个成员(图形)。
答案 1 :(得分:0)
你为你的指针分配了内存吗?
在您访问对象之前,库是否取消分配对象?