-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声明这样的析构函数。
该代码是错误的,因为它使用'delete'而不是'delete []',但是不应该在您发布的最小代码中导致seg错误。所以我认为你遗漏了你测试过的东西。 – JSF