運行某些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