2011-10-02 21 views
0

考虑休耕里面的代码:为什么我会遇到seg故障?我想提出一个字符数组指针结构

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故障会出现。这是为什么?

+0

临时没有定义的任何地方,我可以看到... –

+0

此外,你malloc'ing内存指针的大小,而不是结构。 – slartibartfast

+0

我认为myrkos砸在头上,你正在读内存,你不允许访问。 –

回答

1

更换

malloc(sizeof(pport*)) 

malloc(sizeof(struct port)) 

,因为你不希望为指针分配内存,而在结构。

相关问题