耶。分段错误。
但是,我已将其缩小到导致分段错误的确切行。
以下是相关的代码块: 所以这是我定义的结构。
typedef struct {
int placeID;
char *city;
char *continent;
char *cultural;
char *outdoors;
int dist_from_source;
} place_t;
这是我对place_t的初始化:
place_t *temp_place=NULL;
导致seg错误的行是:
temp_place->placeID=tmp;
其中tmp只是一个值为1的int。
我确定它只是一些愚蠢的指针逻辑,我暂时不知道,但任何帮助都会非常感激!
感谢。
答案 0 :(得分:1)
首先需要为结构指针分配内存:
place_t *temp_place=malloc(sizeof(struct place_t)); //allocate memory first
temp_place->placeID=tmp; //assign values
答案 1 :(得分:0)
通常,无论何时定义指向结构的指针,都可以在内存中定义一个可以存储该结构地址的位置。
但是直到你没有为该结构分配内存(例如使用malloc
或calloc
)并将该内存的地址分配给上面提到的指针,你就不能使用它,因为它指向什么都不是(或者更确切地说,没有任何有用的东西)。