【发布时间】:2021-02-19 17:54:57
【问题描述】:
我在new_session->sid = sid; 遇到分段错误。不知道为什么。
伪会话列表.h
typedef char *user;
typedef int sessionid;
struct session_list {
sessionid sid;
user user;
struct session_list *next;
};
typedef struct session_list *session;
session insert_session(session, sessionid, user);
session search_session(session, sessionid);
session delete_session(session, sessionid);
void show_session_list(session);
伪.c来解释问题:
session sessions;
main(){
get_session_1_svc("this user");
}
extern sessionid * get_session_1_svc(user * usr){
static sessionid sid = 0;
sid = clock();
insert_session(sessions,sid,*usr);
return &sid;
}
session insert_session(session session_list,sessionid sid, user user){
session new_session = (session) (sizeof(struct session_list));
new_session->sid = sid;
new_session->user = user;
new_session->next = session_list->next;
session_list->next = new_session;
return new_session;
}
【问题讨论】:
-
请贴出真实代码。 “Pseudo .c”在询问分段错误时没有用。
-
@dxiv get_session_1_svc 通过 RPC 从客户端调用到服务器。客户端将其用户名作为 char* 发送到方法 get_session1_svc。这就是我改变的一切。以及 insert_Session 位于不同的 .c 文件中,并且 .h 包含在 get_session_1_svc 所在的服务器文件中。
标签: c struct segmentation-fault