typedef struct student {
int number;
string name;
int Chinese;
int math;
int English;
struct student* next;
}student;//链表的结构
问题
在链表create node时一开始使用malloc,程序报错,显示无法读取内存,且显示结构体未初始化。
当时并未想着排查,所以直接换了new,程序正常运行。
于是往new和malloc的区别方面寻找程序出错的原因。以我对两者肤浅的认知,我认为区别在于是否有初始化,而calloc与new都会对申请到的内存进行初始化,于是运用calloc尝试一次,程序在输入name时存在乱码,且有时会同malloc报错一样,由此排除初始化的问题
原因
而calloc在name上出现问题,因此可以从name的角度入手。
回头再看结构体,name为string类型,结构体内的string是不定长度的,无法用malloc分配内存,malloc不会调用结构函数。
解决
若用malloc或calloc,则将string改为char数组或者