Segmentation fault 为什么我会出现seg故障?我想在结构中放置一个字符数组指针
以休闲代码为例:Segmentation fault 为什么我会出现seg故障?我想在结构中放置一个字符数组指针,segmentation-fault,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; }
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故障。为什么会这样?替换
malloc(sizeof(pport*))
与
因为你不想为指针分配内存,而想为结构分配内存。temp在我能看到的任何地方都没有定义……而且,你在分配指针大小的内存,而不是结构。我认为myrkos一针见血,你在读取不允许访问的内存。
malloc(sizeof(struct port))