如何解决线程引用的C重新分配内存
我有一个 C 客户端结构,随着主循环内大小的增加而重新分配,每个客户端都是一个线程。
如果我增加客户端结构的大小,现有线程输出随机t_client->状态数据。我猜 realloc 已经修改了指向客户端结构内存的指针,并且客户端正在查看旧指针。有人能指出我如何解决的正确方向吗?
//realloc client structure
client_array_len *= 2; //double
client = realloc(client,client_array_len * sizeof(struct client));
if (client == NULL){
snprintf(log,sizeof(log),"[0] realloc error\n");
log_info(log);
exit(1);
}
//create thread
if (pthread_create(&thread_id,&thread_attr,t_client,&client[fd_new - 5]) < 0){
snprintf(log,"pthread_create error:%s\n",strerror(errno));
log_info(log);
}
//t_client
void *t_client(void *ptr_t_client)
{
struct client *t_client;
t_client = (struct client *)ptr_t_client;
while (1)
{
sleep(2);
snprintf(t_client->log,sizeof(t_client->log)," status:%d\n",t_client->status);
log_client(t_client);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。