18.12.2017, 10:10 [+3 UTC]
в нашей команде: 2 389 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
17.12.2017, 18:44

Последний вопрос:
18.12.2017, 06:08

Последний ответ:
17.12.2017, 15:42

Последняя рассылка:
17.12.2017, 22:15

Писем в очереди:
383

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
12.08.2011, 21:26 »
serg255
Если б еще образец жалобы, то плюс добавил, спасибо smile [вопрос № 183863, ответ № 268030]
26.03.2012, 16:03 »
lamed
Спасибо, Александр Львович! [вопрос № 185659, ответ № 270320]
11.11.2011, 10:41 »
Посетитель - 385284
большое спасибо

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 591
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 287
CradleA
Статус: Профессионал
Рейтинг: 208

Перейти к консультации №:
 

Консультация онлайн # 63785
Раздел: • С / С++
Автор вопроса: Verena
Отправлена: 23.11.2006, 00:17
Поступило ответов: 1

Здравствуйте!
У меня такой вопрос!
У меня есть класс (см. приложение). Функция bool NewKl (int id) добавляет в дерево новый элемент, вставляя его после id-го по индексу. Корень дерева заведомо существует (создаётся в конструкторе). Функция работает правильно (в отладчике (f5)- всегда), но при запуске (ctrl+f5) в определённом сочетании команд вылезает ошибка. Отловить её я не могу, т.к. в пошаговом запуске ошибки нет. Но если вставить в код вывод, то ошибка исчезает. Помогите, пожалуйста!

der.NewKl (0);
der.NewKl (1);
der.NewKl (1);
der.NewKl (2);
der.NewKl (2);
der.NewKl (2); //на этом шаге ошибка

bool CMyTree::NewKl (int id)
{
Kletka* x; //for (int i=0; i<1000; i++);
//cout << 12 << 12 << '\n'; Если добавить этот вывод, то ошибка исчезает
der = Poisk (&root, id);
if (der!=NULL) {
x=new Kletka;
kol++;
x->ind=kol;
x->zar=10;
x->kp=0;
x->deti=NULL;
x->rod=der;
if (der->kp==0) {
der->deti=new Kletka*; der->deti[0]=new Kletka; der->deti[0]=x;
der->kp=1;
} else {
der->deti[der->kp]=new Kletka; der->deti[der->kp]=x; der->kp++;
}
return true;
}
return false;
}

И ещё вопрос: надо ли дополнительно освобождать память из-под переменной der->deti (и если надо, то как - простой delete не проходит), если я уже удалила все der->deti[i]?

Приложение:

Состояние: Консультация закрыта

Ответ # 127976 от LeoGann

Здравствуйте, Verena!
Не буду точно утверждать так как, код предаставлен не весь, но мне кажется (практически уверен) что ошибка здесь
struct Kletka {
int ind; //индекс
int zar;
int kp;
Kletka* rod;
Kletka** deti; <-- вот здесь ошибка;
};
вы не виделяете память под массив указателей на детей
попробуйте воспользоваться vector ом для хранения ссылок на детей
struct Kletka {
...
std::vetor<Kletka*> deti;
}

Возникнут вопросы пишите.


Консультировал: LeoGann
Дата отправки: 23.11.2006, 09:40

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 63785

Посетитель

ID: 24617

# 1

= общий = | 23.11.2006, 17:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Память выделяется - der->deti=new Kletka*, и такая конструкция допустима. К тому же, всё работает в других случаях и в отладчике тоже всё верно - я проверяла, память выделяется. И если бы были проблемы с этим, то ошибка возникала бы и при удалении. Проблема в том, что программа работает при запуске внутри среды, и глючит вне её!

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13519 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн