提问人:Nick 提问时间:4/1/2014 更新时间:4/1/2014 访问量:69
在 malloc'ing 时出现分段错误
Getting segmentation fault while malloc'ing
问:
我在第二次运行 malloc 时遇到分段错误:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int keywords_init(char *str, char ***str_arr);
int main(void) {
char str[] = "keyword1,keyword2,keyword3";
char **str_arr = NULL;
int arr_elements;
arr_elements = keywords_init(str, &str_arr);
return 0;
}
int keywords_init(char *str, char ***str_arr) {
int i;
char *pch;
/* String break */
pch = strtok(str, ",");
for (i = 0; pch != NULL; i++) {
*str_arr = realloc (*str_arr, (i+1)*sizeof(char *));
*str_arr[i] = malloc (strlen(pch) + 1);
strcpy(*str_arr[i], pch);
printf("%d: %s\n", i, pch);
pch = strtok (NULL, ",");
}
return i;
}
让我感到困惑的是,如果我不将str_arr的地址传递给keywords_init并使用双指针而不是三指针keywords_init它就可以正常工作。
答:
4赞
Paul R
4/1/2014
#1
您被运算符优先级/关联性咬伤了 - 更改以下两个情况:
*str_arr[i]
自:
(*str_arr)[i]
评论
char **
int *
int
char ***