我正在尝试malloc
一个结构中的数组,但是当我运行该程序时,我一直遇到分段错误。
compares
函数只是我正在测试的东西,所以它不应该成为问题的一部分
typedef struct {
char *string;
} prod_t;
int
main(int agrc, char **argv){
int i = 0;
prod_t *c = NULL;
char str2[100] = "abcd";
c->string = (char *) malloc( 5 * sizeof(char));
strcpy(c->string,str2);
compares(c->stock,str2,i);
return 0;
}
答案 0 :(得分:5)
问题是你要为字符串分配空间,但你 根本没有分配结构。 c
仍然设置为NULL
,您试图取消引用它。
在分配给其成员之前为结构分配空间
prod_t *c = malloc(sizeof(prod_t));
并且,作为 next-to-fix 错误的旁注:此字段不存在
c->stock
答案 1 :(得分:4)
答案 2 :(得分:2)
首先,不要施放malloc的结果。你只需要在C ++中这样做。在C中,它实际上可以隐藏潜在的问题。
其次,您需要分配(或静态声明)您的结构。
第三,c->股票不存在。你可能意味着c-> string。
typedef struct {
char *string;
} prod_t;
int
main(int agrc, char **argv) {
int i = 0;
prod_t *c = malloc( sizeof( prod_t ));
char str2[100] = "abcd";
c->string = malloc( 5 * sizeof(char));
strcpy(c->string,str2);
compares(c->string,str2,i);
return 0;
}