![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| AlexDon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
Приветствую всех!
У меня такая проблема: С помощью template определяю класс массив в спец. области памяти. Для выделения и освобождения памяти под массив используется специальный менеджер памяти. Вопрос: как сделать так, чтобы этот специальный менеджер прекращал работу после того как вызовутся все деструкторы массивов? P.S. Программа пишется на Borland 3.1 |
|||
|
||||
| Dragon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 10.8.2006 Где: Киев Репутация: нет Всего: нет |
1. Почему настолько старый компилятор? Проблемы могут быть спецефическими для компилятора. Есть возможность изменить?
2. Нужен код. Но в целом так. Нужно так или иначе реализовать счетчик объектов, и обработчик в деструкторе массива который непосредственно уничтожит менеджера, когда счетчик обнулится. Естественно, ты можешь создать малый класс ManagerObserver с виртуальным деструктором и наследовать от него всю иерархию классов обработчиков. Счетчик можешь определить статической переменной в private секции. Если есть потоки, там же определяешь Mutex. Конструктор инкрементирует счетчик, деструктор декрементирует и проверяет на 0. Но, действительно, нужен код Это сообщение отредактировал(а) Dragon - 11.8.2006, 12:41 |
|||
|
||||
| AlexDon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
1) компилятор такой, потому что работаю под DOS 6.22 (PC- совместимый контроллер).
2) template не терпит никаких статических переменных. 3) код примерно такой:
Как сделеать так, чтобы деструктор менеджера памяти вызывался после всех деструкторов my_array<>? |
|||
|
||||
| Dragon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 10.8.2006 Где: Киев Репутация: нет Всего: нет |
Думаю, так:
Или по паттерну Observer/Observable - суть та же. Насколько я знаю, автоматических средств не существует. Если 3.1 не поддерживает стратегии, можно просто:
Это сообщение отредактировал(а) Dragon - 11.8.2006, 14:20 |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |