pthreads,变量变得错误

时间:2015-01-13 07:32:02

标签: c++ visual-c++ pthreads

这是一个代码片段,第一次从main调用FileServerStart()时工作正常,当我从另一个函数调用FileServerStart()时,它在cout语句中给出了一个错误(访问冲突写入位置0x6C706D61。),而mFileName是字符串定义为类变量。 我尝试使它静态它给出一个错误,字符在字符串中被破坏,我也检查了它我没有改变/在其他地方分配mFileName,我只是在开始的构造函数中分配它并将其作为参数传递给两个不同的地点。 我也尝试在pthread_create()之前分配它,给出一个堆错误。

int FileServer::FileServerStart()
{
    int rc;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
    //mFileName = "C:\\Users\\Kamran Afridi\\Desktop\\sample"; //it is commented
    cout<<"File Server Start: "<<mFileName<<endl;
    rc = pthread_create(&mScanDirectoryThread, &attr, &FileServer::scanDirectoryStructure_helper, (void*)mFileName.c_str());
    pthread_join(mScanDirectoryThread, &status);
    return rc;
}

void *FileServer::scanDirectoryStructure_helper(void* faContext)
{
        return ((FileServer*) faContext)->scanDirectoryStructure_linux((FileServer*) faContext);
}

mFileName when FileServerStart() is called from another function

0 个答案:

没有答案