[英]Struct segmentation fault when adding values to struct members
I'm getting a segmentation fault at new_session->sid = sid;
我在
new_session->sid = sid;
处new_session->sid = sid;
分段错误new_session->sid = sid;
. . Can't figure out why.
想不通为什么。
pseudo sessions_list.h伪sessions_list.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);
Pseudo .c to explain the problem:伪.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;
}
Well, no wonder you are.好吧,难怪你是。 This line:
这一行:
session new_session = (session) (sizeof(struct session_list));
Is completely invalid.是完全无效的。 The fact that you are forcibly casting to
session
hides the error, but you are basically assigning an arbitrary number to a pointer.您强行转换为
session
的事实隐藏了错误,但您基本上是为指针分配了一个任意数字。
I suspect that you actually want to allocate memory .我怀疑你真的想分配内存。 In such case, you would do the following:
在这种情况下,您将执行以下操作:
session new_session = malloc(sizeof(struct session_list));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.