运行某些C++代码时,我遇到了段错误。我已经将问题隔离到程序中删除指针的行。下面是产生同样的错误一个简单的例子:删除指针时出现Segfault错误
int main()
{
int* pointer=0;
int number = 3;
pointer = &number;
delete pointer;//This line causes a segmentation fault
pointer=0;
return 0;
}
一个稍微的改变产生的代码如预期,将工作:
int main()
{
int* pointer=new int(3);
delete pointer;//This line now works
pointer=0;
return 0;
}
有人可以解释为什么首先使段错误和第二个不?我知道指针不是无效的,因为它已被分配给数字变量的地址。
第一个没有分配'new',因此调用'delete'并不是正确的做法。 – ildjarn 2012-02-10 22:36:01