2015-12-14 113 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,在数组形式。