我有这样的一段代码,编译和按预期工作:分割错误:为什么?
#include <iostream>
using namespace std;
int fun(int* p){
*p = 20;
return 1;
}
int main(){
int* number;
*number =10;
cout << "before: "<<*number<<endl;
fun(number);
cout << "after: "<<*number<<endl;
return 1;
}
尽管下面的人给分段错误:
#include <iostream>
using namespace std;
int fun(int* p){
*p = 20;
return 1;
}
int main(){
int test=1; //ADDITION
int* number;
*number =10;
cout << "before: "<<*number<<endl;
fun(number);
cout << "after: "<<*number<<endl;
return 1;
}
我使用g++ test.cpp -o test
可有人给我解释一下编译这种行为来自哪里?
他很幸运?事实上,他非常不幸,因为一个严重的编程错误通过。 – Benoit 2011-03-15 17:06:22
或者:'int * number = &test;' – 2011-03-15 17:08:11
我同意Benoit。对于UB这样的_not_ crash是_unlucky_。 – 2011-03-15 19:32:52