我在flavour
下有一个名为struct Node
的字符串变量,每当我输入风味变量的字符串时,程序都会停止工作并最终不打印任何内容。我已经通过使用不同的变量类型(例如整数和字符)对其进行了测试,这两种变量类型都可以正常工作,并且可以打印出变量中的所有内容。
这是我的代码:
#include <iostream>
using namespace std;
struct Node {
string flavor;
struct Node *next;
};
struct Node* head = NULL;
void insert(string data) {
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->flavor = data;
new_node->next = head;
head = new_node;
}
void display() {
struct Node* ptr;
ptr = head;
while (ptr != NULL) {
cout<<"First data is "<< ptr->flavor;
ptr = ptr->next;
}
}
int main() {
string input;
cout<<"Enter a flavor!"<<endl;
cin>>input;
insert(input);
cout<<"The linked list is: ";
display();
return 0;
}
答案 0 :(得分:3)
使用malloc
不会调用类构造函数。请改用new
。
答案 1 :(得分:3)
用new代替malloc分配。当前,您的代码使字符串Node :: flavor处于未初始化状态,因此,当您尝试为其分配值时,它试图释放或访问无效的内存位置。
Convert.exe