それぞれの要求に対してスレッドを開始するサーバーを作成しています。 私はリクエストのarugmentsといくつかの他のものをスレッドに渡したいと思います。 これを行うには、構造体を使用します。構造体は、割り当てられ、割り当てられた文字列を指すポインタを含みます。メインスレッドが次のループに入るときでも、スレッドの構造体を生かしておくために、そうします。 この構造体へのポインタをスレッドに渡すと、文字列を指す構造体のポインタがその情報を "失ってしまいました"。 私はEXC_BAD_ACCESSを手に入れました。なぜ私はアイデアを持っていません。割り当てられた文字列が割り当てられた文字列がpthreadの引数として渡されると、ポインタが割り当てられたときにポインタが失われる
すべてのヘルプは大歓迎:-)
typedef struct _thdata
{
int socket;
int thread_no;
char *parameter;
}thdata;
void *thread_function(thdata *data)
{
printf("Thread %i: got:%s\n",
data->thread_no, data->parameter);<-EXC_BAD_ACCESS
...
free data->parameter;
free data;
pthread_exit((void *)0);
}
int main(...)
{ ...
while(1){
...
thdata *data;
data = (thdata*)malloc(sizeof(data));
data->socket=connSocket;
data->thread_no=i;
data->parameter=(char*)malloc(strlen(param)+1);
strcpy(data->parameter, param);
...
pthread_create(&p_thread, NULL, (void *(*)(void *))thread_function,
(void*) &data);
...
}
}
ああ、私はあまりにも多くの時間を見ていたので、私はもうそれを見ていない! – Schaltfehler
私はstrcpyを行うために自分のコードを変更することに非常に重点を置いていましたが、私の問題があなたとまったく同じで、間違った引数を渡したことに気付かなかった。 +1されました – RyanfaeScotland