2015-12-14 2 views
-1

У меня есть вопрос новичка о 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(){ 
}; 

без ВЕЬЕТЕ, никаких проблем, если я удалю деструктор из файла заголовка и исходного кода, Я могу удалить тест указателя класса, но я не могу его удалить, тогда как я объявил деструктор, как это, без segfault.

+0

Код неправильный, потому что он 'delete' вместо' delete [] ', но это не должно вызывать ошибку seg в минимальном коде, который вы отправили. Поэтому я думаю, что вы ничего не заметили о том, что вы тестировали. – JSF

ответ

5

Вы должны delete[] test, в форме массива.

Смежные вопросы