2015-12-14 105 views
-1

我有一個關於C++和析構函數的新手問題。如果我已經聲明瞭一個destoructor,我刪除了一個類指針後,我的C++程序出現了分段錯誤,否則我不知道爲什麼。非常感謝幫助。C++析構函數分段錯誤

主文件,其中使用了該類。

#include <iostream> 
#include "foo.h" 

int main(int iargc, char *iargv[]){ 
    std::cout<<"helloworld"<<std::endl; 

    foo *test; 
    test = new foo[2]; 
    delete test; 

} 

頭文件:

#ifndef FOO_H 
class foo{ 
    public: 
     foo(); 
     ~foo(); 
}; 
#define FOO_H 
#endif 

Foo.cpp中

#include "foo.h" 

foo::foo(){ 
}; 

foo::~foo(){ 
}; 

沒有delete語句,沒有任何問題,如果我在頭文件和源代碼中刪除析構函數,我可以刪除類指針測試,但我不能刪除它,而我沒有segfault聲明這樣的析構函數。

+0

該代碼是錯誤的,因爲它使用'delete'而不是'delete []',但是不應該在您發佈的最小代碼中導致seg錯誤。所以我認爲你遺漏了你測試過的東西。 – JSF

回答

5

你應該delete[] test,在數組形式。