Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для Eraston
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 183

Долгое высвобождение памяти

19.02.2015, 22:55. Показов 3700. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возможно, такой вопрос уже встречался, но ответа мне найти не удалось.
Намахал template List.
C++
1
2
3
4
5
6
7
8
9
10
~List(){
        Item *srh = (Item*)head, *dead;
        clock_t t1 = clock();
        while( srh ){
            dead = srh;
            srh = srh->next;
            delete (T*)dead; // используется наследование от Item. Удалить как class T.
        }
        plog("< %p: %p ms\n", this, clock()-t1 );
    };
100000 объектов T размера около 200b были созданы за 84 ms. Удалялся список 9937 ms.

Конечно, не так часто будут выделяться/освобождаться гигабайты памяти, но и, в случае необходимости, выгружать списки с данными из памяти по нескольку часов не будет радовать. Возможно как-то ускорить этот процесс и с чем связана такая длительность?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2015, 22:55
Ответы с готовыми решениями:

Высвобождение динамической памяти
Нужна помощь, в проблеме высвобождения памяти, все делаю по стандартам С++, но постоянно выдает ошибки. Фото 1, в случае, если пытаюсь...

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

Высвобождение памяти для 3 измерения массива
Здравствуйте. Не могу понять почему выходит ошибка. Я сделал 3х мерный массив, у которого 2 строки . Он неравномерный. В 1 строке 3...

47
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.02.2015, 00:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
Этот тип не зависит от параметров агрегата.
Это не тип элемента, и никакого отношения к типу элемента не имеет.
Ну так в том то и дело я хз чему он нужен, но явно не к тому что вы говорили:

C++
1
2
typedef _Tp value_type;
value_type __value_;
Структура/класс нода изначально зависит от типа как я понимаю (и VoidPtr тут не причем)
0
23.02.2015, 02:25

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Прдон но я лично не понимаю зачем насаждать свою Си-религию в разделе плюсов.
Странно, что hoggy обвиняется в насаждении С-религии. Разве может true-С`шник писать, например, такое? Не, hoggy точно не насаждает тут никакую C-религию, ты ошибаешься.

0
23.02.2015, 02:31

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Разве может true-С`шник писать, например, такое?
Думаю, Си'шники вполне могут освоить SFINAE, а препроцессор это вообще их религия.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
23.02.2015, 02:43
Цитата Сообщение от Croessmah Посмотреть сообщение
Думаю, Си'шники вполне могут освоить SFINAE, а препроцессор это вообще их религия.

Не по теме:

Это больше, чем просто SFINAE, там используется трюк,
аналогов которого я не находил в интернетах.

Вы не найдете в интернетах аналога этому детектору.
Эта модель уникальна, поскольку может выявить доступность любого метода по всей иерархии,
с учетом квалификатора const, возможных перегрузок, и модификаторов доступа.

(у меня дома валяется версия для msvc2012-msvc2013.
Модификатор доступа правда не учитывает из-за бага в компиляторе)

Я потратил все выходные на её изобретение,
и засиделся до глубокой ночи с воскресения до понедельника
(первая чертверть субботы ушла на изучение существующих моделей.
Ни одна из них такое не осиливает)

Что до сишников - если сишник освоил SFINAE, это уже не сишник.
Это - самый что ни на есть злостный крестухан.

0
23.02.2015, 02:44

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Думаю, Си'шники вполне могут освоить SFINAE, а препроцессор это вообще их религия.
То, что могут - это я вообще не спорю :) Пост как бы не пытался обличить сишников в невозможности что-то понять. Пост о другом. Все сишники, с которыми мне доводилось работать, испытывают страшные муки, когда им приходится сталкиваться с С++ чуть выше middle-уровня. Т.е. как Си с классами - это нормально, что-то большее - "сразу нет". Не потому что они не могут это понять, а потому что им это кажется лишним, необоснованным усложнением.

0
23.02.2015, 03:21

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
Это больше, чем просто SFINAE, там используется трюк,
аналогов которого я не находил в интернетах.
ну, значит, он уже есть в интернетах :)
Я обратил внимание именно на SFINAE не потому, чтобы показать простоту решения, а для того, чтобы сказать, что Си'шники - не глупые люди и вполне могут освоится и в плюсах. Они могут хоть днем и ночью восхвалять C, и в тоже время заниматься метапрограммированием на C++. Я клоню к тому, что тру-Си'шник может быть аким по убеждениям, но это не значит, что он обязан писать только на Си и отвергать всё иное.
Цитата Сообщение от DrOffset Посмотреть сообщение
необоснованным усложнением.
Overengineering тоже не есть хорошо. Всё зависит уже от конкретного случая, ну и от страха сунуть руки в эту "мясорубку" :D

0
 Аватар для Eraston
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 183
24.02.2015, 06:06  [ТС]

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
Если ты знаешь больше нас - зачем задаёшь подобные вопросы?
Там был смысл в конструкции предложения, и ничего относящегося к С++.



Цитата Сообщение от Avazart Посмотреть сообщение
Кстати что за ... ?
Цитата Сообщение от hoggy Посмотреть сообщение
сишное приведение к наследнику, и удаление наследника.
может быть ТС просто не в курсе насчет виртуальных деструкторов.
Если я правильно понимаю, при удалении Item* будет удален объект как Item*, ибо с каких ... компилятору знать какой у нас там из наследников. Следовательно, необходимо привести указатель к корректному типу?
(так, к слову, через отладчик удаление объектов как Item* (24б) заняло миллисекунды, а как class T* (176б) минуты).

Цитата Сообщение от hoggy Посмотреть сообщение
Можно 1 раз освободить весь блок целиком.
Можно 1000 раз освобождать кусочек за кусочком.
А еще, если используется динамический список, значит, наверное, мы заранее не знаем, сколько у нас будет объектов, каких объектов (о, да, можем занести в один лист разные объекты, что занимают различное пространство), и в итоге придется блоки ручками выделять, перераспределять и т.д. и т.п.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
24.02.2015, 08:38
Цитата Сообщение от Eraston Посмотреть сообщение
Если я правильно понимаю, при удалении Item* будет удален объект как Item*, ибо с каких ... компилятору знать какой у нас там из наследников. Следовательно, необходимо привести указатель к корректному типу?
Цитата Сообщение от hoggy Посмотреть сообщение
может быть ТС просто не в курсе насчет виртуальных деструкторов.
Похоже на то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2015, 08:38

Очень долгое освобождение динамически выделенной памяти
Все никак не могу разобраться с одной проблеммой! У меня есть отображение, в котором хранятся указатели на абстрактный класс Node ...

Решение слишком долгое!
Добрый вечер всем, недавно начал изучать языки и многого не знаю. В целом разбираюсь неплохо, но не хватает практики. Написал программу...

Долгое завершение if (~1.500 мс)
Здравствуйте, в общем по какой-то причине операция if стала очень долго завершаться, все действия внутри себя выполняются очень быстро в...

Самое долгое слово в файле
Дали написать прогу: 1 Выводит из файла1 в файл2 строки где одно слово 2 Ищет во втором файле самое долгое слово 3 Считает количество...

Высвобождение памяти компонента
Добрый вечер, снова я. Не подскажите как организовать следующее: допустим я создаю динамический компонент при создании формы, скажем так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru