我有以下代码。 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/