Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

простенький вопросик по C++

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Infiltrator



Зарегистрирован: 26.12.2003
Сообщения: 2
Откуда: Moscow

СообщениеДобавлено: Пт Дек 26 2003 14:08    Заголовок сообщения: простенький вопросик по C++ Ответить с цитатой

простенький вопросик по C++


суть :
есть два класса - базовый и порожденный.

в базовом классе используются динамические данные, и соответственно есть деструктор.
в порожденном есть свои динамические данные.

вопрос :

нужно ли в порожденном классе писать деструктор для данных базового класса + для своих, либо только для своих ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
X-M@n
Гость





СообщениеДобавлено: Пт Дек 26 2003 14:40    Заголовок сообщения: -> Простенький вопросик Ответить с цитатой

Пиши только для унаследованного класа. Его деструктор вызовет деструктор для базового.
Вернуться к началу
GDI
Гость





СообщениеДобавлено: Ср Дек 31 2003 14:38    Заголовок сообщения: Ответить с цитатой

Вообще-то деструктор наследника должон вызывать и деструктор родителя, но можно осуществит это самому, что бы совесть была чиста Very Happy
Вернуться к началу
grayrat



Зарегистрирован: 30.06.2003
Сообщения: 189

СообщениеДобавлено: Ср Дек 31 2003 16:20    Заголовок сообщения: Ответить с цитатой

а будет ли чиста совесть если delete 2 раза по одному и тому-же месту ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SergeyV
Гость





СообщениеДобавлено: Пт Янв 02 2004 02:18    Заголовок сообщения: Re: простенький вопросик по C++ Ответить с цитатой

В каждом классе в деструкторе удаляй лишь те данные, которые в этом классе создал, так в будущем сумеешь избавиться от досадных ошибок.
И еще совет: делай деструкторы всегда виртуальными, это тоже убережет тебя от утечки памяти в некоторых ситуациях
Вернуться к началу
совсем незнакомый



Зарегистрирован: 24.12.2003
Сообщения: 183
Откуда: Israel

СообщениеДобавлено: Пт Янв 02 2004 18:13    Заголовок сообщения: Ответить с цитатой

если проблема - утечки памяти наплохая штучка -
умные пойнтеры (см. в инете: smart pointers)
удачи.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GeX



Зарегистрирован: 03.01.2004
Сообщения: 60
Откуда: Россия, Иркутск

СообщениеДобавлено: Вт Янв 06 2004 10:37    Заголовок сообщения: Ответить с цитатой

А еще чтобы ловить утечки памяти есть очень хорошая примочка к Visual C++ 6.0, называется Bounds Checker от компании NuMega. Я без нее никуда, и вам всем советую.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
grayrat



Зарегистрирован: 30.06.2003
Сообщения: 189

СообщениеДобавлено: Вт Янв 06 2004 15:44    Заголовок сообщения: про утечку памяти Ответить с цитатой

class a
{
...
};


...

A *a;

for( int i=0; i<10; i++ )
{
a = new A;
printf( "%p\n", a );
delete a;
}

Случай, конечо, простейший, но! Если утечки памяти нет, то значение указателя меняться не будет, а если есть - можно узнать сколько байт каждый раз теряется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...