c++ - 段错误发生在某些编译器中,但其他编译器没有

标签 c++ linked-list

我有以下代码。 ubuntu12.04 中的编译器 g++ 告诉我存在段错误。但是当我在 MingW g++ 编译器中尝试相同的代码时,它通过了。

有什么想法吗?

#include<iostream>
using namespace std;

class ListNode{
    public:
        ListNode *next;
        int val;
        ListNode(int x):val(x),next(NULL){};
    };

    int main(){
        ListNode *head;
        head->val=0;
        ListNode *p=head;


        for(int i=1;i<=10;i++){
            p->next=new ListNode(i);
            p=p->next;
        }
    return 0;
}

最佳答案

你在分配它之前使用它。这是 undefined behaviour .在 MinGW 系统上,它没有崩溃是纯粹的“运气”,但它仍然无效。你必须先分配头:

ListNode *head;
head = new ListNode(0);

// do some stuff

// delete head;

关于c++ - 段错误发生在某些编译器中,但其他编译器没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19990404/

相关文章:

c++ - WinApi:将键盘焦点赋予新线程中的新窗口

c++ - STL vector 的默认构造函数

c++ - 如何解决非常大的数组输入的 SIGSEGV 错误?

java - 将链表分成两半并返回后半部分

java - 如何删除 O(1) 中单链表的最后一个元素?

c++ - 如何比较两个双向迭代器的(顺序)?

c - 段错误 :11 in my code for creating a linked list in C

javascript - 在 javascript 中使用链表

相当于tailq的C++

c++ - 将数字四舍五入到指定的精度