Почему я получаю ошибку seg? Я хочу поместить указатель массива символов внутри структуры

#segmentation-fault

#ошибка сегментации

Вопрос:

рассмотрим исходный код:

 typedef struct port * pport;

struct port
{
  int a;
  int b;
  pport next;
  pport prev;
  char * port;
};

void addNewport(pport head)
{
  pport newPort = (pport)malloc(sizeof(pport*));
  newPort->prev=temp;
  head->next=newPort;
}

int main()
{
  pport head = (pport)malloc(sizeof(pport*));
  addNewport(head);
}
  

Это приведет к ошибке seg, если попытаться добавить новый порт через подпрограмму, но если я выполню ее как основную, ошибка seg не появится. Почему это?

Комментарии:

1. temp не определен нигде, что я могу видеть…

2. Кроме того, вы обрабатываете память размером с указатель, а не со структурой.

3. Я думаю, что миркос попал в точку, вы читаете память, к которой вам не разрешен доступ.

Ответ №1:

Заменить

  malloc(sizeof(pport*))
  

с

  malloc(sizeof(struct port))
  

потому что вы не хотите выделять память для указателя, а для структуры.