【发布时间】:2015-07-30 07:25:49
【问题描述】:
我正在尝试 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;
}
【问题讨论】:
-
你忘记为
prod_t *c分配内存。 -
添加
c = malloc(sizeof *c);,然后添加c->string = malloc(5 * sizeof *(c->string)); -
通常,在这种情况下,您会在调试器下运行程序,然后在某行看到它崩溃,然后检查该行上的变量值。在这种情况下,当您尝试访问
c->string时程序崩溃时,您会看到c是NULL。