C++析构函数分段错误

C++ destructor segmentation fault

本文关键字:错误 分段 析构函数 C++      更新时间:2023-10-16

我有一个关于c++和析构函数的新手问题。如果我已经声明了destorutor,那么我的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[] test