考虑以下代码:
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 :(得分:1)
替换
malloc(sizeof(pport*))
与
malloc(sizeof(struct port))
因为您不想为指针分配内存,而是为结构分配内存。