23.04.2017, 18:44 [+3 UTC]
в нашей команде: 1 914 чел. | участники онлайн: 6 (рекорд: 21)

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

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

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

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

Форум:
23.04.2017, 11:54

Последний вопрос:
23.04.2017, 18:04

Последний ответ:
23.04.2017, 09:11

Последняя рассылка:
23.04.2017, 17:45

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

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

Наша кнопка:

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

Отзывы о нас:
04.03.2017, 09:18 »
svrvsvrv
Спасибо. Всё очень подробно и обстоятельно. [вопрос № 190634, ответ № 274715]
03.04.2010, 08:14 »
Sherinu
Большое спасибо. Получается, что с получением паспорта дееспособность не приобретается. [вопрос № 177599, ответ № 260544]
17.01.2011, 17:11 »
Мироненко Николай Николаевич
Спасибо Вам большое! Если что, в мини-форуме спрошу smile [вопрос № 181916, ответ № 265475]

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

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

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

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

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

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

Консультация онлайн # 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.15299 сек.

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