目前我有一个我无法理解的奇怪错误。
东西是: 我在类中创建了一个类似于
的线程的方法 void loadDocument(){
ActionThread* thread = new ActionThread(data, path);
thread->start();
}
然后在ActionThread.h中
class ActionThread : public ofThread{
public:
bool toLoad;
Data* data;
string path;
ActionThread(Data* data, string path){
this->toLoad = true;
this->data = data;
this->path = path;
}
void start(){
startThread(true, false);
}
void threadedFunction(){
if(toLoad)
data->loadDocument(path);
stopThread();
}
}
和Data.cpp
void Data::loadDocument(string path){
ofxXmlSettings xmlDocument;
xmlDocument.load(path); <------------
}
所以,这就是代码的概念。问题是当我调用方法loadDocument
两次时,第二个会在xmlDocument.load(path)
处出现错误。
第二条路径可以是与第一条路径相同或不同的路径。
无论我为第二个选择哪条路径,它都会引发错误std::out_of_range at memory location
。
没有线程,我的意思是在没有任何线程的情况下执行loadDocument
,它可以工作,但我需要它们,因为有些负载需要一段时间。
这里的任何人都知道为什么会这样?顺便说一句,它在ofUtils.cpp中崩溃了
string ofToDataPath(string path, bool makeAbsolute)
检查时的方法
if (defaultWorkingDirectory().toString() != getWorkingDir().toString())