我正在用C++編寫程序來在Linux上進行內部聊天。該代碼具有包含私有結構的類屬性,該結構在共享內存中實例化,因此在多個終端中運行的相同程序可以訪問相同的數據並使聊天工作。我的問題是,聊天必須同時讀寫,所以你必須創建一個線程閱讀和另一個閱讀,但我不知道熱使用它,當我遇到問題時,我進入線程,指針 到共享內存結構被重置,可以這麼說,指向地址0x0並給出了分段錯誤。使用C++類中的線程進行段錯誤
這不是我的程序,但不是放這麼多行代碼我在一個例子中總結了我做錯的部分,你能告訴我我做錯了什麼嗎?爲什麼我會陷入seg故障?
#include <thread>
#include <iostream>
#include <mutex>
#include <condition_variable>
class bar {
private:
struct SharedMessage{
int number=21;
};
SharedMessage* sharedMessage_;
public:
void foo(void) {
std::cout << "hello from member function: " << std::endl;
std::cout << sharedMessage_->number << std::endl;
}
void thread (void){
sharedMessage_=new SharedMessage;
std::thread t(&bar::foo, bar());
t.join();
std::cout << sharedMessage_->number << std::endl;
}
};
int main()
{
bar Object;
Object.thread();
}
你的意思是'這個'代替'bar()'嗎? – 2014-12-13 18:15:34