Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Программа в порядке, однако segmentation fault. - C++

24.01.2010, 22:10. Просмотров 605. Ответов 4
Метки нет (Все метки)

Код правильный, программа компилируется, работает как надо, однако при выходе получаю Segmentation fault.

Так в чем же ошибка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// ADT-класс
#include <iostream>
using namespace std;
 
 
class Shape
{
    public:
        Shape() { }
        virtual ~Shape() { }
        virtual long GetArea() = 0;
        virtual long GetPerim() = 0;
        virtual void Draw() = 0;
    private:
};
 
class Circle: public Shape
{
    public:
        Circle(int radius) : itsRadius(radius) { }
        ~Circle() { }
        long GetArea() { return 3*itsRadius*itsRadius; }
        long GetPerim() { return 3*itsRadius; }
        void Draw();
    private:
        int itsRadius;
        int itsCircumference;
};
 
void Circle::Draw()
{
    cout << "Circle drawing routine here!\n";
}
 
 
class Rectangle: public Shape
{
    public:
        Rectangle(int len, int width):
            itsLength(len), itsWidth(width) {}
        virtual ~Rectangle() {}
        virtual long GetArea() { return itsLength * itsWidth; }
        virtual long GetPerim() { return 2*(itsLength + itsWidth); }
        virtual int GetLength() { return itsLength; }
        virtual int GetWidth() { return itsWidth; }
        virtual void Draw();
    private:
        int itsWidth;
        int itsLength;
};
 
void Rectangle::Draw()
{
    for(int i=0; i<itsLength; i++)
    {
        for(int j=0; j<itsWidth; j++)
            cout << "x ";
        
        cout << endl;
    }
}
 
class Square: public Rectangle
{
    public:
        Square(int len);
        Square(int len, int width);
        ~Square() { }
        long GetPerim() { return 4*GetLength(); }
};
 
Square::Square(int len):
    Rectangle(len, len)
{}
 
Square::Square(int len, int width):
    Rectangle(len, width)
    
{
    if(GetLength() != GetWidth())
        cout << "Error, not a square... a Rectangle??\n";
}
 
int main()
{
    int choice;
    bool fQuit = false;
    Shape* sp;
    
    while(!fQuit)
    {
        cout << "(1)Circle (2)Rectangle (3)Square (0)Quit: ";
        cin >> choice;
        
        switch(choice)
        {
            case 0: fQuit = true;
                break;
            case 1: sp = new Circle(5);
                break;
            case 2: sp = new Rectangle(4, 6);
                break;
            case 3: sp = new Square(5);
                break;
            default: cout << "Please enter a number between 0 and 3: ";
                continue;
                    break;
        }
        if(!fQuit)
            sp -> Draw();
                delete sp;
            cout << endl;
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2010, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа в порядке, однако segmentation fault. (C++):

Program received signal SIGSEGV, Segmentation fault - C++
Когда запускаю дебагер: gdb ./preci Вюдает следуще. Я не могу понять с чем это могет быть связано. Код: GNU gdb 6.4.90-debian...

Программист сделал прогу на C++, однако она не включается - C++
Программист сделал прогу на C++, однако она не включается. Какие плагины/библиотеки нужно установить для включения? Windows 7 пиратка

Программа,выводящая список запущенных процессов в порядке присвоенного им ID (по убыванию) - C++
Нужна программа с++, выводящая список запущенных процессов в порядке присвоенного им ID (по убыванию)

Сортировка слов в алфавитном порядке. Error: Segmentation fault - C Linux
Разработать программу, которая выводит на экран содержимое текущего каталога в алфавитном порядке. Каталоги не выводить. #include...

Программа выводит segmentation fault! - C++
Текст задачи: Структура «Спортивная команда»: - название; - из какого города; - сколько игр сыграла; - сколько набрала...

Segmentation fault. Программа для сложения многочленов - C++
Доброго времени суток всем. Мне задали сделать программу по сложению и перемножению многочленов. Написав код для сложения, я столкнулся с...

4
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
24.01.2010, 22:13 #2
отладчик - классная штука. открой его для себя.

Добавлено через 48 секунд
ошибка возникает из-за этого:
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Shape* sp;
1
Gravity
564 / 558 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
24.01.2010, 22:19 #3
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
delete sp;
Если выбрать 0, то память под sp не выделится, а delete все равно сработает, отсюда и ошибки с сегментацией.
1
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
24.01.2010, 22:27  [ТС] #4
>> zim22 >> Gravity

Спасибо, сам нашел ошибку. Привык компилировать G++ без отладчика, поэтому иногда такие простые ошибки сложно найти...

Добавлено через 59 секунд
>> zim22

А есть какой-то консольный дебаггер, без IDE? для G++
0
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
24.01.2010, 23:03 #5
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
А есть какой-то консольный дебаггер, без IDE? для G++
gdb
1
24.01.2010, 23:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2010, 23:03
Привет! Вот еще темы с ответами:

При попытке использовать одновременно параметры-nostartfiles и-static программа выдаёт Segmentation fault - C (СИ)
#define MESG &quot;Hello, World!\n&quot; #define MESG_SZ sizeof(MESG) main() { write(1,MESG,MESG_SZ); _exit(0); }

Printhepl ключом -h выдает что делает программа, но в конце пишет segmentation fault(core damped) - C++ Linux
Помогите выявить ошибку, компилю в линуксе, когда вызывают Printhepl ключом -h он выдает что делает программа, но в конце пишет...

Segmentation fault - C Linux
Здраствуйте, написал программу в qt-creator, проект на си без qt ось убунту и решил затестить на своем vds там стоит debian при запуске...

Segmentation fault - C++
Пишу лабу для универа. В общем необходимо использовать только свои функции, никаких, str... подобных функций использовать нельзя. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.