Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Tim12345 Гость
|
Добавлено: Ср Дек 24 2003 02:15 Заголовок сообщения: Супер глюк!!! Помогите разобраться!!! |
|
|
При компиляции в операционных системах Debian Linux и Sun Solaris компилятором g++ следующий код даёт Segmentation Fault. В MS VC++ всё ок! Подскажите в чём проблема. Может ключи какие-то нужно указать компилятору. Самое смешное, что при удалении неиспользуемых в этой программе функций из класса B тоже всё работает.
Вот код:
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "A" << endl;
}
virtual ~A() {
cout << "~A" << endl;
}
};
class C;
class B : public A {
public:
B() {
cout << "B" << endl;
}
B(C *c) {
}
virtual ~B() {
cout << "~B" << endl;
}
private:
void *f(void *arg) {
return NULL;
}
private:
C *theC;
};
class C {
public:
C(int count) {
theA = new B[count];
}
~C() {
delete[] theA;
}
private:
A *theA;
};
int main() {
C(2);
return 0;
} |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Ср Дек 24 2003 11:50 Заголовок сообщения: |
|
|
когда "создаёшь" переменную в форме: int(23);
на деле происходит:
int::int(int);и сразу же: int::~int();
у тебя:
C(2); внутри C::~C() тaм вызван A::~А() освобождать B - a это нехорошо. |
|
Вернуться к началу |
|
|
|