填充结构C中的分段错误,缩小到一行

时间:2014-10-16 22:59:50

标签: c pointers struct segmentation-fault initialization

耶。分段错误。

但是,我已将其缩小到导致分段错误的确切行。

以下是相关的代码块: 所以这是我定义的结构。

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。

我确定它只是一些愚蠢的指针逻辑,我暂时不知道,但任何帮助都会非常感激!

感谢。

2 个答案:

答案 0 :(得分:1)

首先需要为结构指针分配内存:

  place_t *temp_place=malloc(sizeof(struct place_t));  //allocate memory first
  temp_place->placeID=tmp;                             //assign values

答案 1 :(得分:0)

通常,无论何时定义指向结构的指针,都可以在内存中定义一个可以存储该结构地址的位置。

但是直到你没有为该结构分配内存(例如使用malloccalloc)并将该内存的地址分配给上面提到的指针,你就不能使用它,因为它指向什么都不是(或者更确切地说,没有任何有用的东西)。