Ada*_*hns -1 c++ linux pthreads
我在C++中遇到了pthreads的奇怪错误,我尝试运行这段代码:
typedef struct
{
struct sockaddr_in clienAddr;
int clientLength;
string message;
}param;
pthread_t clientThread;
param sentParam ;
sentParam.clienAddr = clientAddress;
sentParam.clientLength= client_info;
sentParam.message=buffString;
cout <<"sentParam: "<<sentParam.message<<endl;
// it prints well.
int i = pthread_create(&clientThread, NULL, handleClientRequestRead,&sentParam );
cout <<"i: "<<i<<endl;
the function which be called
void* handleClientRequestRead(void* params)
{
// cout<<"params: "<< ;
string msg = (( param *)(params))->message;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试打印msg时它是空的.任何帮助将不胜感激
我的猜测是,当handleClientRequestRead被调用时sentParam已经超出范围并且其内存已被重用于其他目的.
您应该在您从线程访问它时仍然有效的位置为您的参数分配内存(例如,在堆上,请记住,当您不再需要它时必须释放它;有效的帮助可以shared_ptr).
顺便说一句,在C++中你不需要s 的typedef技巧struct.