|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.01.2011, 02:24 | #1 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Освобождение памяти от экземпляра класса
Реализовываю задачу по дисциплине "Структуры и алгоритмы". Как понимаете, данная дисциплина накладывает жесткие ограничения на работу с памятью - ни один бит не должен уйти в пустую, скорость выполнения алгоритма должна быть высокой и т.д.
Стояла задача реализовать свой собственный двусвязный список(LinkedList использовать нельзя), в котором необходимы методы: Push() - вставить экземпляр в список; Pop() - изъять(перенаправить связи) экземпляра списка; Get_First() - получить первый экземпляр в списке; само собой конструкторы и деструктор и прочее. Все это успешно реализовано, но встал вопрос про экономию памяти: если текущий размер списка больше чем тот, который ввел пользователь, то нужно удалить несколько последних элементов. Не долго думая, пишу банальный код: Код:
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
03.01.2011, 03:03 | #2 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
Разделом не ошиблись?
В .net нету delete, нельзя ничего удалить - все лишнее автоматически освобождается |
03.01.2011, 03:42 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
какой нахрен delete в dotNET?
там обьекты сами уничтожаются как только теряются все ссылки на них. (да я и вообще считаю что dotNET и экономия памяти вещи не совместимые, VM всетаки) или я отстал от жизни?(это вопрос к шарпистам) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.01.2011, 12:55 | #4 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Единственный ход быстрой очистки памяти в .NET, насколько я знаю, это - убить объект(= null и вручную вызвать сборщик мусора.
|
04.01.2011, 14:44 | #5 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 722
|
|
05.01.2011, 12:45 | #6 | |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Цитата:
По предоставленным ссылкам MSDN, нашел методику вызова сборщика мусора: Код:
Код:
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
|
05.01.2011, 13:21 | #7 |
Форумчанин Подтвердите свой е-майл
Регистрация: 20.11.2007
Сообщений: 500
|
У object есть метод Dispose(), который его уничтожает и очищает память.
|
05.01.2011, 16:40 | #8 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
На самом деле там всё просто, ггг.
Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
05.01.2011, 17:27 | #9 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Отчасти согласен. Для Mixim - это действительно так. Но когда объекты занимают сотни mb (у меня такие на практике есть), то такой вызов единственное спасение.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление экземпляра класса | Juffin | Общие вопросы Delphi | 5 | 02.11.2010 11:57 |
Освобождение памяти | Seran4ek | Общие вопросы Delphi | 7 | 21.12.2009 18:07 |
Освобождение памяти | PUH | Помощь студентам | 1 | 22.11.2009 17:14 |
Освобождение памяти | VadEr | Общие вопросы Delphi | 2 | 17.04.2009 22:23 |
Освобождение Памяти в Си | volotsky | Помощь студентам | 2 | 16.12.2008 22:36 |