|
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 92
|
||||||||||||
Что считать утечкой памяти?20.06.2015, 16:05. Показов 3162. Ответов 65
Метки нет (Все метки)
0
|
||||||||||||
| 20.06.2015, 16:05 | |
|
Ответы с готовыми решениями:
65
Как бороться с утечкой памяти?
Как справиться с утечкой памяти в коде? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.06.2015, 13:43 | |||
|
Кликните здесь для просмотра всего текста
можно много раз запускать хэлловорлд на выполнение. и ни разу не возникнет ситуации, когда приложение зажирает непойми какую память, не пойми куда.
0
|
|||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 21.06.2015, 14:07 | |
|
hoggy, Википедия не является авторитетным источником. Или назовите мне автора этого определения. А то оно стремное какое-то. То есть если я напишу демон, который вообще не будет освобождать память, и скажу, что он контролируемо сжирает всю память ОС за 2 часа, после чего я его рестарчу, то типа у меня в демоне утечек памяти нет? А может все-таки это говорит о том, что там дофига утечек, но просто я на них забил?
У нас в памяти есть объект, который оттуда нельзя удалить. Приложение само не освобождает память, в которой больше не нуждается для работы, а возлагает это на ОС. Поэтому в приложении - по определению это утечка. Осознанная или нет, допустимая или нет, - это уже другой вопрос. Если мы пишем продакшен-код, то нужно спрашивать себя - "есть ли тут реальная причина не освобождать память"? Если причины нету, то освобождать. Обратные вопросы типа "а можно ли тут не освобождать память" - показатели непрофессионализма, до добра не доводящие.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.06.2015, 14:27 | |||
|
и всех все устраивает. если требования изменятся, и нужно будет, что бы демон 7/24 крутился без рестартов, а он не может, потому что падает от нехватки памяти, и хрен что с этим поделаешь, без серьёзного рефактора, тогда это уже будет называться "утечки". вот вам другой пример: есть специальные аппараты, и софтина под них. требование к работе: утюг. воткнули в розетку - работает. выткнули - не работает. в каких то частых циклах память освобождается, как и должно быть по уму. но долгоживущие объекты, аля "звуковая подсистема" создаются, а на освобождение забивается. зачем? время жизни - до конца приложения. а выключение - дернуть шнур из розетки. однако, главный признак профессионализма - не делать то, что можно было бы не делать. то есть, не делать что-либо зазря. в случае с утюгом, требования изменились. и захотелось, что бы на одном аппарате было несколько софтин, и была возможность вызывать меню, с помощью которого можно было переключаться между ними. мои софтинки это спокойно перенесли, потому что я использовал смарт-поинтеры, и вручную память нигде не дергал. это к слову о продакшене. а вот если кто нибудь докалебется до хэлловорлда из 5 строк кода: так и хочется ответить: да идите в баню, оно вообще надо? писать дополнительный код, который не относится к иллюстрации момента, и никому нафиг не нужен.
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 21.06.2015, 14:44 | ||
|
* Демон жрет память, мы это знаем, поэтому перезапускаем его каждые пару часов и радуемся. Утечек нет. * Забыли перезапустить демона вовремя - утечки есть. Так?
1
|
||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||
| 21.06.2015, 14:59 | ||
|
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 21.06.2015, 15:18 | |||
|
hoggy, в статьях, документациях, инструментах обнаружения утечек, которые я видел, - везде это характеризуется как свойство именно кода, безотносительно каких-либо внешних требований. Можете привести ссылки какие-нибудь?
![]() Добавлено через 5 минут
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 21.06.2015, 20:01 | |||||||||
|
потому что никто в здравом уме не будет сознательно писать настолько запредельный б_ы_д_л_о_к_о_д. но если бы нашелся настоящий ценитель: забыл бы перезапустить демона - поимел бы аварию сервиса. а не утечку. я вам приведу более реалестичный пример: допустим, есть некий движок для видео-игр:
заметьте: я не спрашиваю, есть ли тут утечка, я спрашиваю: теоретически вообще может ли здесь быть утечка? Кликните здесь для просмотра всего текста
нет здесь никаких утечек.
потому что, все подсистемы кроме звуковой зависят друг от друга. и если даже вылетит исключение при конструировании очередной из них, движок уже не сможет работать. что с того, что у нас там не отработают диструкторы отдельных полей класса в случае эксепшенов? что с того, что часть памяти зачистит система, а не оператор delete ? у нас в любом случае авария несовместимая с жизнью приложения. мы все равно ничего не можем сделать. ну поменяем мы сырые указатели на смартпоинтеры, ну позвали мы эти самые диструкторы. что дальше? в любом случае все, всё, что мы можем сделать в этой ситуации, это заллогировать происшествие, и тихо помереть. видео-игра без окна, без графики, без гуи функционировать все равно не сможет. но для логгирования нам звать диструкторы не нужно. мы это итак можем сделать. и уже не важно кто зачистит за приложением: система, или диструкторы классов. исход все равно один: это авария. а не утечка. так что здесь есть только два варианта: либо авария, и шандец всему. либо все отлично, играем, наслаждаемся жизнью. обратите внимание, что звуковая подсистема обернута в трай-кетч. без окна, графики жить нельзя. а без звуковой можно. поэтому для неё персонально exception-safe Добавлено через 8 минут вот вам очень простой способ: вы сознательно выбросили объекты, или вы их потеряли?
0
|
|||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.06.2015, 20:07 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.06.2015, 20:27 | |
|
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||||
| 21.06.2015, 22:17 | ||||||||
![]() Определение утечки памяти - одно единственное: отсутствие возможности освободить память объекта, доступ к которому невозможен. (Не знаю даже какой авторитетности должен быть источник, чтобы в это поверил наш неверующий Фома). Считать утечки существенными или нет - совершенно другой разговор (то, что пытается впарить нам hoggy). Важность утечки никоим образом не отменяет факта существования самой утечки. Если вдруг возникло какое-то сомнение - запусти профайлер, заточенный на поиск утечек и посмотри, что он будет говорить например для такого кода (с delete и без):
Вариант вывода valgrind'а:
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 21.06.2015, 22:22 | ||
|
потому что везде пишут: неконтролируемая утеря ресурса.
0
|
||
| 21.06.2015, 22:23 | |
|
Не по теме: Tulosba, я что-то не понял, они всё-таки добавили кнопку "Выделить код", или я неосознанно скрипт установил?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 21.06.2015, 22:24 | ||
|
правда настроил так, что бы он не агрился на эту переменную. и блин... молчит, зараза. или вот: запилил сингелтон, который майн пережил - сагрилсо! вот не нада вот такую туфту прогонять. я аппелирую к здравому смыслу. вы - к форме, не учитывая содержание.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 21.06.2015, 22:31 | ||
|
Контроль подразумевает возможность что-то сделать (освободить память в данном случае), а возможности этой нет на уровне языка. И не надо тут про ОС повторять. ОС это уже другой уровень, которого, как я раньше говорил, может и вовсе не быть.
0
|
||
| 21.06.2015, 22:34 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 21.06.2015, 22:39 | ||||||
|
ключевое слово "забытый". обратите внимание: и потом, на то оно и контролируемое, что программист в курсе. так что даже если теоретически нужно будет портануться на какие нибудь микроволноффки - проблем не вызовет.
0
|
||||||
| 21.06.2015, 22:39 | |
|
Помогаю со студенческими работами здесь
40
Является ли данный случай утечкой памяти? Когда исправят баг с утечкой памяти в Rhythmbox?
Как бороться с утечкой памяти в приложении при его длительной работе Считать изображения из памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|