通用堆栈推送错误

时间:2017-05-23 01:14:46

标签: c data-structures void-pointers memmove

我试图创建一个通用堆栈。当我尝试推送一个值时,我遇到了问题 进入堆栈,程序崩溃在memmove行:

typedef struct s_node{
    void *info;
    struct s_node *next;
}t_node;

typedef struct{
    char name[50];
    int salary;
}t_employee;

typedef t_node* t_stack;

void createStack(t_stack *p){
    *p=NULL;
}

int push(t_stack *p,void *inf,int siz){
    t_node *new=(t_node*)malloc(sizeof(t_node));
    if(!new)return 0;
    memmove(new->info,inf,siz);    !!!!!CRASH
    new->next=*p;
    *p=new;
    return 1;
}

int main()
{
    t_stack p;
    t_employee e={"Jhon Freeman",30000};
    createStack(&p);
    push(&p,&e,sizeof(t_employee));
    return 0;
}

2 个答案:

答案 0 :(得分:1)

new-> info指向无处。初始化它:)

答案 1 :(得分:1)

您声明了新内容,但未初始化new->信息。