Я пишу сервер, который запускает поток для каждого входящего запроса.Я хочу передать ветки запроса и некоторые другие вещи в ветку.Для этого я использую структуру, которая выделена и содержит указатель, который указывает на выделенную строку.Я делаю так, чтобы сохранить структуру живой для потока, даже когда основной поток входит в свой следующий цикл.Когда я передаю указатель на эту структуру в мой поток, указатель в структуре, который должен указывать на строку, «теряет» свою информацию.Ну, я получаю EXC_BAD_ACCESS и понятия не имею, почему.
Любая помощь приветствуется: -)
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);
...
}
}