Как вы относитесь к утечкам памяти...
От: Shmj Ниоткуда  
Дата: 13.01.23 00:33
Оценка: :))) :)))
Вот, допустим, приходится вам доработать некую прогу. А там при открытии окна настроек, которое открывается не часто а может вообще никогда — немного подтекает. Ну примерно по 100 кб. при каждом открытии.

Стали бы вы на этом заострять внимание или хрен с ним?

Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?
Re: Как вы относитесь к утечкам памяти...
От: Нomunculus Россия  
Дата: 13.01.23 00:45
Оценка: +12
Здравствуйте, Shmj, Вы писали:

Ни байта утечек, конечно. Не ради утечек. А потому что ты уже потерял контроль над программой и это чревато гораздо большими проблемами.
Re[2]: Как вы относитесь к утечкам памяти...
От: Shmj Ниоткуда  
Дата: 13.01.23 09:21
Оценка:
Здравствуйте, Нomunculus, Вы писали:

Н>Ни байта утечек, конечно. Не ради утечек. А потому что ты уже потерял контроль над программой и это чревато гораздо большими проблемами.


Но а вообще по вашему опыту — насколько часто утечки в популярных программах?

Вот взять Хром, на который жалуются. Он реально течет или там просто кеш выделяется оно все потом само со временем очистится?
Re[3]: Как вы относитесь к утечкам памяти...
От: Нomunculus Россия  
Дата: 13.01.23 09:22
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Но а вообще по вашему опыту — насколько часто утечки в популярных программах?


Не знай, не дебажил популярные программы. Если прога забивает память и тормозит — я просто ей не пользуюсь, не выясняю утечки это или нет.

S>Вот взять Хром, на который жалуются. Он реально течет или там просто кеш выделяется оно все потом само со временем очистится?


Ну а если так, то что? Это повод подражать им в плохом?
Re[4]: Как вы относитесь к утечкам памяти...
От: Shmj Ниоткуда  
Дата: 13.01.23 09:31
Оценка: +1 :)
Здравствуйте, Нomunculus, Вы писали:

S>>Вот взять Хром, на который жалуются. Он реально течет или там просто кеш выделяется оно все потом само со временем очистится?

Н>Ну а если так, то что? Это повод подражать им в плохом?

Пока ты будешь байты считать — они выпустят новую версию и завоюют рынок.
Re[5]: Как вы относитесь к утечкам памяти...
От: Нomunculus Россия  
Дата: 13.01.23 09:36
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Пока ты будешь байты считать — они выпустят новую версию и завоюют рынок.


Кто "они"? Хром. Я работаю абсолютно в другой области.
И да, я предпочитаю качество своей работы. Взять хотя бы игры. Есть огромные игры с огромными бюджетами, которые текут, зависают, падают. И да, гребут бабло лопатой, несмотря на то, что все на них плюются.
А есть маленькие нишевые игры, вылизанные, продуманные, фанаты обсуждают их и ждут новые версии. Хотя да, лопатой бабло не гребут.

Так вот — я предпочитаю быть ближе ко второй группе разработчиков, чем к первой.

Ты во многих темах говоришь, что деньги — это критерий чего-то. Это примитивизация мира. Потому что деньги — это циферьки и их легко сравнить. Но в реальности — деньги абсолютно не критерий.
Re: Как вы относитесь к утечкам памяти...
От: vsb Казахстан  
Дата: 13.01.23 09:59
Оценка: +1 :)))
Все баги не исправишь. Всегда есть приоритеты. По крайней мере я других проектов пока не видел. Небольшие утечки памяти на мой взгляд это из разряда низкоприоритетных багов. Я бы исправлял все баги, я перфекционист, но бизнес на это может смотреть по-другому.
Re[2]: Как вы относитесь к утечкам памяти...
От: so5team https://stiffstream.com
Дата: 13.01.23 11:07
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Все баги не исправишь. Всегда есть приоритеты. По крайней мере я других проектов пока не видел. Небольшие утечки памяти на мой взгляд это из разряда низкоприоритетных багов. Я бы исправлял все баги, я перфекционист, но бизнес на это может смотреть по-другому.


Так вы же, вроде бы, и на C++ не пишете?
Re[3]: Как вы относитесь к утечкам памяти...
От: vsb Казахстан  
Дата: 13.01.23 11:21
Оценка:
Здравствуйте, so5team, Вы писали:

vsb>>Все баги не исправишь. Всегда есть приоритеты. По крайней мере я других проектов пока не видел. Небольшие утечки памяти на мой взгляд это из разряда низкоприоритетных багов. Я бы исправлял все баги, я перфекционист, но бизнес на это может смотреть по-другому.


S>Так вы же, вроде бы, и на C++ не пишете?


Иногда пишу. В жаве утечки памяти тоже случаются. А чем специфичны утечки памяти на С++?
Re[4]: Как вы относитесь к утечкам памяти...
От: so5team https://stiffstream.com
Дата: 13.01.23 11:47
Оценка: +3
Здравствуйте, vsb, Вы писали:

vsb>Иногда пишу. В жаве утечки памяти тоже случаются. А чем специфичны утечки памяти на С++?


По сравнению с чистым Си, про использование которого вы недавно в другой теме говорили, в C++ есть механизм(ы) для простого (по отношению к Си) и эффективного управления памятью. Если такие механизмы используются, а память в C++ном коде все равно течет, то программа явно работает не так (тут Нomunculus совершенно прав
Автор: Нomunculus
Дата: 13.01.23
). А раз программа работает не так, то может течь и все остальное, а может быть и еще чего хуже (отсутствие обработки каких-то ситуаций или неправильная их обработка, к примеру).

Так что толерантное отношение к утечкам памяти в C++ коде удивляет. Можно это простить, когда такое случается во время аврала, записывается в технический долг и затем исправляется. Но это исключительные случаи, имхо.
Re: Как вы относитесь к утечкам памяти...
От: rg45 СССР  
Дата: 13.01.23 11:59
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Вот, допустим, приходится вам доработать некую прогу. А там при открытии окна настроек, которое открывается не часто а может вообще никогда — немного подтекает. Ну примерно по 100 кб. при каждом открытии.

S>Стали бы вы на этом заострять внимание или хрен с ним?
S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?

К утечкам отношусь отрицательно, конечно же, но и в "подтекающую" программу не полезу, очертя голову. Я считаю, что в программах, написаных с какой-то самой элементарной культурой, утечки памяти исключены. А если это не так, то эта программа подобна неразорвавшемуся снаряду и без саперов ее лучше не трогать.
--
Re: Как вы относитесь к утечкам памяти...
От: alpha21264 СССР  
Дата: 13.01.23 13:07
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?


Ни байта утечек. Привычка, которая образовалась во времена когда "640К хватит на всё".

Течёт вода Кубань-реки куда велят большевики.
Re: Как вы относитесь к утечкам памяти...
От: B0FEE664  
Дата: 13.01.23 17:55
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот, допустим, приходится вам доработать некую прогу. А там при открытии окна настроек, которое открывается не часто а может вообще никогда — немного подтекает. Ну примерно по 100 кб. при каждом открытии.

S>Стали бы вы на этом заострять внимание или хрен с ним?
Однажды я устроился работать в контору и моим первым заданием было: вот тебе программа, твоя задача — устранить все утечки памяти. Завернул все голые указатели в смарт объекты и утечек не стало.

S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?

Так это не программисту решать, а пользователям. Вон — JavaScript течёт почти во всех браузерах, но правят баги только если память начинает утекать слишком быстро, т.е. быстрее, чем закончится работа пользователя в браузере.
А есть программы, которые работают месяцами и годами — в них даже байтовые утечки не допустимы.
А ещё есть программы, работа которых связана с безопасностью людей, для них вообще по нормам часто запрещается динамический заказ памяти.
И каждый день — без права на ошибку...
Re: Как вы относитесь к утечкам памяти...
От: Evgeny.Panasyuk Россия  
Дата: 14.01.23 06:24
Оценка: 30 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Вот, допустим, приходится вам доработать некую прогу. А там при открытии окна настроек, которое открывается не часто а может вообще никогда — немного подтекает. Ну примерно по 100 кб. при каждом открытии.

S>Стали бы вы на этом заострять внимание или хрен с ним?
S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?

Зависит от. Ситуации разные бывают, стараюсь смотреть на объективные аспекты.

1. Новый код, тем более свой, должен быть без утечек. В современном C++ это настолько просто, что трудно представить какое-то оправдание. No-leak должен быть стилем по-умолчанию, другой код просто не должен проходить review. Тот кто не понимает этот стандартный и простой стиль C++ — банально не проходит моё собеседование.

2. Если это отдельная утилита, которая загружает какие-то данные, обрабатывает их, и выплёвывает результат, и пишется полностью другими отделами, или возможно стажёрами без пристального/грамотного надзора, но поставленную задачу решает корректно и с приемлемым пиковым потреблением ресурсов — ну спасибо им за утилиту и решение проблемы. А внутренний бардак их процесса — он же наружу уши не показывает, и остаётся внутри жёсткого загончика контролируемого ядром.
А какие ещё варианты?
Переписать самому в лишнее несуществующее время?
Заставить их переписать? Это трудно обосновать, ибо объективно задача решена.

3. Если это отдельная утилита (такого же типа как в п.2.) и даже написанная в стандартном стиле без утечек, намеренная и глобальная подмена аллокатора памяти на примитивный (инкрементирующий указатель) но при этом текучий — может в разы ускорить общее время выполнения, и это всего-лишь ценной десятка строчек и повышенным потреблением памяти — вполне себе допустимый инженерный компромисс, ибо есть объективные преимущества, а утечки памяти ограниченны временем жизни процесса.

4. Утечки могут быть необходимы в силу кривого дизайна интерфейса сторонней библиотеки, либо даже её внутренних багов связанных с висящими указателями. В таких случаях намеренная утечка на границе интерфейса, либо насильственное выключение деаллокаций — может быть вполне приемлемым костылём. Но опять таки, желательно эту кривую зависимость вынести в отдельный процесс тем или иным способом, чтобы внутренний бардак не портил всю систему.

5. Очерёдность разрушения глобальных/синглтонов может привести к фиаско, а всякие фениксы и прочие set_longevity могут быть неприменимы по разным причинам — в таких случаях текучий синглтон Майерса может быть вполне приемлемым решением (если достоверно известно что течёт только память).
Отредактировано 14.01.2023 9:02 Evgeny.Panasyuk . Предыдущая версия .
Re[2]: Как вы относитесь к утечкам памяти...
От: LaptevVV Россия  
Дата: 14.01.23 10:04
Оценка:
Спасибо за развернутый ответ.
EP>5. Очерёдность разрушения глобальных/синглтонов может привести к фиаско, а всякие фениксы и прочие set_longevity могут быть неприменимы по разным причинам — в таких случаях текучий синглтон Майерса может быть вполне приемлемым решением (если достоверно известно что течёт только память).
Не уверен, что топикстартер знает:
а) что такое синглтон
б) что такое синглтон Майерса
в) что он течет...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Как вы относитесь к утечкам памяти...
От: Evgeny.Panasyuk Россия  
Дата: 14.01.23 13:16
Оценка: 2 (1) +1
Здравствуйте, LaptevVV, Вы писали:

LVV>б) что такое синглтон Майерса

LVV>в) что он течет...

Стандартный вариант сам по себе не течёт:
auto& instance()
{
    static T x{};
    return x;
}

Он гарантирует то что экземпляр будет создан при первом вызове, причём потокобезопасно. Он также будет уничтожен при завершении программы, но порядок этого отследить в большой системе нетривиально. И при завершении может возникнуть ситуация когда один синглтон пытается использовать другой, но тот уже уничтожен. Ещё веселее если там цикл.

Течёт одна из вариаций которая пытается обойти описанную проблему:
auto& instance()
{
    static auto& x = *new T{};
    return x;
}
Re[4]: Как вы относитесь к утечкам памяти...
От: пффф  
Дата: 14.01.23 13:48
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:


EP>Течёт одна из вариаций которая пытается обойти описанную проблему:

EP>
EP>auto& instance()
EP>{
EP>    static auto& x = *new T{};
EP>    return x;
EP>}
EP>


Я бы не сказал, что это утечка
Re: Как вы относитесь к утечкам памяти...
От: пффф  
Дата: 14.01.23 13:54
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот, допустим, приходится вам доработать некую прогу. А там при открытии окна настроек, которое открывается не часто а может вообще никогда — немного подтекает. Ну примерно по 100 кб. при каждом открытии.


S>Стали бы вы на этом заострять внимание или хрен с ним?


Хрен с ним. Хотя, зависит от того, что подразумевается под доработкой. Если в задании сказано, что надо устранить утечки — то придётся заострять внимание. А если утечки раньше никого не парили, то с чего бы мне беспокоится


S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?


В том, что пишу я сейчас — ни байта утечек. Благо C++ сам всё разруливает.

А так — как-то дописывал чужую консольную утилитку на сишечке, которая парсила вход и выплевывала выход — я там не стал разбираться, кто на ком стоит и кто чем владеет, и просто делал malloc без всяких free. На любых разумных объемах входных данных тулза отрабатывала нормально, и меня это вполне устроило
Re[5]: Как вы относитесь к утечкам памяти...
От: Evgeny.Panasyuk Россия  
Дата: 14.01.23 14:49
Оценка:
Здравствуйте, пффф, Вы писали:

EP>> static auto& x = *new T{};

П>Я бы не сказал, что это утечка

Ну если там только память — то это рояли не играет.
Но внутри T может быть любой ресурс, или какой финализатор. Пример с потолка — например этот T формирует xml отчёт и в деструкторе закрывает тэги.
Re: Как вы относитесь к утечкам памяти...
От: Pzz Россия https://github.com/alexpevzner
Дата: 14.01.23 15:42
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Стали бы вы на этом заострять внимание или хрен с ним?


Стал бы.

S>Как вы вообще относитесь к утечкам — снисходительно или ни байта утечек?


Ни байта.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.