在含有链表操作的程序中,运行程序时,输入字符串类型的名字信息后崩溃,调试的时候报错<读取字符串时出错>
原来是在初始化时采用了malloc函数:
normal = (listpoint*)malloc(sizeof(listpoint));
normal->information = (data1*)malloc(sizeof(data1));
malloc是C 语言的内存管理函数,它们不能正确处理 C++ 的对象(如string
)的构造和析构,string
类需要 C++ 的动态内存管理机制来正确创建和销毁对象,使用 malloc
会导致未定义行为,因为 malloc
不会调用构造函数和析构函数。
因此需要将初始化链表的方法更换为new即可:
listpoint* normal = new listpoint;
normal->information = new Data;
错误消除