【问题标题】:C++ destructor segmentation fault [duplicate]C ++析构函数分段错误[重复]
【发布时间】:2015-12-14 18:04:23
【问题描述】:

我有一个关于 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语句,没有任何问题,如果我从头文件和源代码中删除析构函数,我可以删除类指针测试,但我不能删除它,而我这样声明析构函数没有段错误.

【问题讨论】:

  • 代码错误,因为它使用delete 而不是delete[],但这不会导致您发布的最小代码出现段错误。所以我认为你遗漏了一些关于你测试的内容。

标签: c++


【解决方案1】:

你应该delete[] test,以数组形式。

【讨论】:

    猜你喜欢
    • 2015-04-05
    • 1970-01-01
    • 2021-04-05
    • 2012-02-05
    • 2013-04-30
    • 2012-10-24
    • 2012-03-09
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多