2011-10-02 1 views
0

는 다음과 같은 코드를 고려해야합니다.왜 내가 seg fault를 얻습니까? 구조체 내부에 char 배열 포인터를 넣고 싶습니다.

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 오류가 나타나지 않습니다. 왜 그런가요?

+0

어디서든 내가 볼 수있는 온도는 정의되어 있지 않습니다 ... –

+0

또한 구조체가 아닌 포인터의 크기가 malloc'ing됩니다. – slartibartfast

+0

myrkos가 머리에 못을 박았다고 생각합니다. 액세스 할 수없는 메모리를 읽고 있습니다. –

답변

1

malloc(sizeof(struct port)) 

malloc(sizeof(pport*)) 

를 교체합니다.

관련 문제