Malloc 结构内的数组
Malloc an array inside a struct
我正在尝试 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;
}
首先,不要转换 malloc 的结果。您只需要在 C++ 中执行此操作。在C中,它实际上可以隐藏潜在的问题。
其次,您需要分配(或静态声明)您的结构。
第三,c->stock不存在。你可能是说 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;
}
问题是您正在为字符串分配 space,但根本而不是 分配结构。 c
仍设置为 NULL
并且您正在尝试取消引用它。
在分配给它的成员之前为结构分配space
prod_t *c = malloc(sizeof(prod_t));
并且,作为您的 next-to-fix 错误的旁注:此字段不存在
c->stock
您需要先为结构分配 space,然后才能分配给 string
成员:
prod_t *c = malloc(sizeof(prod_t));
另见 Do I cast the result of malloc?
我正在尝试 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;
}
首先,不要转换 malloc 的结果。您只需要在 C++ 中执行此操作。在C中,它实际上可以隐藏潜在的问题。
其次,您需要分配(或静态声明)您的结构。
第三,c->stock不存在。你可能是说 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;
}
问题是您正在为字符串分配 space,但根本而不是 分配结构。 c
仍设置为 NULL
并且您正在尝试取消引用它。
在分配给它的成员之前为结构分配space
prod_t *c = malloc(sizeof(prod_t));
并且,作为您的 next-to-fix 错误的旁注:此字段不存在
c->stock
您需要先为结构分配 space,然后才能分配给 string
成员:
prod_t *c = malloc(sizeof(prod_t));
另见 Do I cast the result of malloc?