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>关键字来释放你分配给你的节点的内存。