string 结构体赋值 Posted on 2018-09-30 | 结构体中string赋值在进行一下操作时,下面一行调试出现错误,程序终止。 1234567891011121314151617181920212223242526typedef struct NODE{ string line; struct NODE *next; } node;node *head;node *p,*q,*HEAD;main(){ char op; int n=0,num; p=(node*)malloc(sizeof(node)); p->next=NULL; HEAD=p; head=p; while(1) { getline(cin,a); p = (node*)malloc(sizeof(node));//***** p->line=a; //出现错误!!! ***************** head->next=p; p->next=NULL; head=p; n++; }} 由于:结构体内的string不定长,不能动态分配内存,需要用用new来分配内存 malloc只是分配内存。new除了分配内存还会调用构造函数的。 应将 1p = (node*)malloc(sizeof(node)); 改为 1p = new NODE;