C++ 第15次循环后的链表运行时错误
我在链表上的插入有问题。这是我的密码:C++ 第15次循环后的链表运行时错误,c++,linked-list,runtime-error,C++,Linked List,Runtime Error,我在链表上的插入有问题。这是我的密码: for(j = 0; j < SIZE; j++) { body = (textFile*) malloc (sizeof(textFile)); body->word = words[index[j]]; if(head == NULL) { head = tail = body; } else { tail
for(j = 0; j < SIZE; j++) {
body = (textFile*) malloc (sizeof(textFile));
body->word = words[index[j]];
if(head == NULL) {
head = tail = body;
}
else {
tail->next = body;
tail = body;
cout << tail->word << endl;
}
}
(j=0;j{
body=(textFile*)malloc(sizeof(textFile));
正文->文字=文字[索引[j]];
if(head==NULL){
头=尾=身体;
}
否则{
尾巴->下一个=身体;
尾巴=身体;
cout word问题在于初始化主体结构的方式:
body = (textFile*) malloc (sizeof(textFile));
字符串未初始化,当您尝试分配给它时,导致分割错误。您应该使用C++ <代码>新< /Cord>关键字代替:
body = new textFile;
new
关键字将为结构以及其中包含的任何对象引用分配内存
另请参见问题在于初始化主体结构的方式:
body = (textFile*) malloc (sizeof(textFile));
字符串未初始化,当您尝试分配给它时,导致分割错误。您应该使用C++ <代码>新< /Cord>关键字代替:
body = new textFile;
new
关键字将为结构以及其中包含的任何对象引用分配内存
另请参见应用程序的输出是什么?什么是数组索引[]
?为什么需要它而不是像单词[j]
那样直接索引单词数组,而不是单词[index[j]]
?也许您可以发布更多的代码。另外,看起来您正在将尾部和下一个节点都设置为主体。一个不相关的注释:指针++;break;
无效。此值不再读取。@AjiPorter,点是…指针
不再读取。应用程序的输出是什么?是什么数组index[]
?为什么需要它而不是像words[j]
那样直接索引单词数组,而不是words[index[j]]
?也许你可以发布更多的代码。另外,看起来你正在将尾部和下一个节点都设置为主体。一个不相关的注释:指针++;break;
无效。这个值不再读取。@AjiPorter,重点是…指针
不再读取。非常感谢您,先生!我可以问一个后续任务吗ion?为什么字符串没有用malloc初始化?我查看了你提供的链接,但是这些术语对我来说太专业了,比如非平凡构造函数和其他很多。我真的认为我在stackoverflow中学到的东西比在我的类中要多。:)body=(textFile*)malloc(sizeof(textFile))之间的区别是什么和“body=new textFile”?很抱歉,这是我第一次遇到new;我们班上还没有讨论它。:(我刚刚意识到我是个白痴。body=(textFile*)malloc(sizeof(textFile))是C和<代码> Boe=新的TrimeFrase<代码>是C++的。抱歉,我刚才在搜索其他链表问题时发现了这个。再次感谢@ MiKeq6!这里有一个链接:我知道:malloc是C,但是在C++中完全可以接受,如果你在结构中使用了C风格的字符串,即<代码> char *单词> >不要忘记释放你分配给你的节点的内存,在程序的最后,使用<代码> Debug < /Cord>关键字。太多了,先生!我可以问一个后续问题吗?为什么字符串没有用malloc初始化?我查看了您提供的链接,但是这些术语对我来说太专业了,比如非平凡构造函数等等。我真的认为我在stackoverflow中比在我的类中学到更多。:)body=(textFile*)之间的区别是什么malloc(sizeof(textFile));'和'body=new textFile'?很抱歉,这是我第一次遇到new;在我们班上还没有讨论过。:(我刚刚意识到我是个白痴。body=(textFile*)malloc(sizeof(textFile))是C和<代码> Boe=新的TrimeFrase<代码>是C++的。抱歉,我刚才在搜索其他链表问题时发现了这个。再次感谢@ MiKeq6!这里有一个链接,我在这里得到启发:DNO担心:是的,malloc是C,但是在C++中完全可以接受,如果你在结构中使用了C风格的字符串,即 char * Word ,不要忘记在你的程序结束时使用<代码>删除> /Cord>关键字来释放你分配给你的节点的内存。