结构指针i c中的分段错误

时间:2014-10-15 14:29:12

标签: c

下面是我的c程序给我分段错误,我不知道为什么。 sizeof(struct node1 *)给出答案4,sizeof(struct node1)给出12。请解释一下。

#include<stdio.h>
#include<malloc.h>

struct node{
        int i;
        int j;
};

struct node1{
        int *a;
        int *b;
        struct node *n;
};

int main()
{
        struct node1 *nn;
        nn=(struct node1 *)malloc(sizeof(struct node1));
        nn->n->i=5;
        printf("\nsize is %d  -- %p -- %p %d\n",sizeof (struct node1*),*nn,nn,nn->n->i);

return 0;
}

1 个答案:

答案 0 :(得分:2)

您是段错误,因为未分配'node1'结构的'n'成员。 在第一次分配后在nn-&gt; n上使用malloc。

struct node1 *nn;

nn=(struct node1 *)malloc(sizeof(struct node1));
nn->n = malloc(sizeof(struct node));
//now nn->n is allocated you can set a value in nn->n->i
nn->n->i=5;

不要忘记“返回0”之前的免费通话

free(nn->n);
free(nn);
return 0;