Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: указатели и указатели на указатели.  (Прочитано 10754 раз)
0 Пользователей и 1 Гость смотрят эту тему.
psl
Гость
« : 26-02-2005 07:52 » 

Такая проблема - есть два массива - массив указателей и массив указателей на указатели первого массива. Проблема в том, что при освобождении памяти для указателей первого массива, "указатели на указатели" второго массива могут указывать на нулевые адреса, а доступ приводить к исключению.
В принципе проблема решена - но вариант не вполне устраивает, ибо изредка возникают исключения, а обрабатывать их по идеологическим причинам я не могу:(.

Вопрос: существуют ли стандартные/нестандартные решения? Где почитать? Можно ли как-нибудь локализовать причину подобного исключения в отладчике VC?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-02-2005 10:33 » 

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

А вообще-то, мне кажется, что дело в логике - надо лучше продумать. Если опишешь задачу, то попробуем дать совет, как лучше решить ее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Хз, я не очень просто не очень во всё это верю, во всякие там сатурны и прочую поебень.
Pu
Большой босс

ru
Offline Offline
78


« Ответ #2 : 26-02-2005 12:03 » 

 используй так называемые smart pointers, реализации есть в различных библиотеках например в Boost, Loki , да и в STL так же есть такой класс auto_ptr.
описание что это такое  с примерами и описанием реализаций - почитай в книжке Джефф Элджер - "C++ for real programmers"
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Serega
Гость
« Ответ #3 : 26-02-2005 20:53 » 

Pu, auto_ptr не стоит использовать, он не предназначен для хранения в контейнерах
Это просто указатель со стратегией владения (т.е. при удалении указателя удаляется и обьект на который он указывает), у Мейерса в Efficient STL много написано о том, где хорошо использовать auto_ptr а где не стоит
Записан
Pu
Большой босс

ru
Offline Offline
78


« Ответ #4 : 27-02-2005 12:25 » 

Serega, есть такая штука, читал...  просто я про контейнеры речи не вел, потому и присоветовал. А вообще в той жеж книге  Effective STL рекомендуется конечно вместо динамических массивов [] пользоваться контейнерами.
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Serega
Гость
« Ответ #5 : 27-02-2005 14:04 » 

Указатели хорошо сделаны в Boost
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 28-02-2005 06:10 » 

psl,

Насколько критично использовать С/С++ с ручным управлением памяти?  Может быть возможно испопользовать сборщик мусора?
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
psl
Гость
« Ответ #7 : 28-02-2005 20:46 » 

дело в следующем:
имеется структура данных, указатель на которую передается некоторому классу, этот класс меняет структуру по определенному алгоритму и взводит флаг или каким-либо другим образом извещает о готовности. Естественно - асинхронно и естественно эта структура не одна, а массив.
auto_ptr не подойдет.

В данный момент не интересуют утечки памяти, интересует как грамотно определить в классе, что структура освобождена по той или иной причине.
в принципе сейчас с целью отладки добавлен указатель на "указатель на указатель"Улыбаюсь и метка - но мне не нравится, должно же быть лучшее решение, но без обработки исключения.

2npak: что понимать под сборщиком мусора? как он должен работать?
Записан
Serega
Гость
« Ответ #8 : 28-02-2005 22:05 » 

SharedPtr и WeakPtr из Boost
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines