#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))
потому что вы не хотите выделять память для указателя, а для структуры.