|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal а рабочий релиз нужен вотпрямщас Да, прямо в точку. Хоть как-то работающий релиз нужен позарез. Использовать старые версии годичной давности (которые меньше глючат и меньше падают) не вариант - т. к. старые версии постепенно перестают быть актуальными для пользователей ввиду недостаточного функционала. А кто уже обновился ему и вовсе назад на старые версии не перейти. Fr0sT-Brutal , . При этом падения с описанной частотой приемлемы. А кто ж их спрашивать будет, эти падения - приемлемы они или нет? Программа падает и никого не спрашивает, приемлемо это или нет. В последние дни вроде падать стало реже. Не знаю, благодаря моему менеджеру памяти, который выделяет память с запасом или благодаря включению в релизы Range Check Error и Overflow Check Error. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 10:52 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal Справедливости ради, вполне возможно, что ресурсов фиксить баги нет, а рабочий релиз нужен вотпрямщас. Угу, оно всегда так. Делать хорошо - ресурсов нет, а делать плохо, мучиться, переделывать и в итоге тратить в десять раз больше - они откуда-то находятся. И что самое забавное - в результате ресурсов никогда нет, потому что они всегда уходят на борьбу с ранее созданными хренями. И так продолжается до тех пор, пока результат просто волевым усилием не спускается в унитаз, и вместо него с нуля не делается такое же дерьмо, только на другой технологии. Часто теми же людьми - что, собственно, и обеспечивает "такое же дерьмо". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 11:11 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Может это использовать https://bitbucket.org/shadow_cs/delphi-leakcheck ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 11:40 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
ziv-2014, да у них не утечки, у них скорее всего доступ к убитым объектам по типу Код: pascal 1. 2. 3.
SafeMM + EuricaLog например, как раз то, что доктор прописал искать и править ну и спич возникнет как всегда вокруг .Free-FreeAndNil() ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 20:45 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
я когда искал утечки с помощью fastmm был вынужден делать freeandnil у объектов так как fastmm показывал утечку указателя, при том что сам объект был убит. так с тех пор и привык им пользоваться ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 21:40 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
энди> был вынужден делать freeandnil у объектов так как fastmm энди> показывал утечку указателя, при том что сам объект был убит Для обычных объектов или интерфейсов? Обычно всякие чеккеры (в т.ч. в других ЯП и средах, типа валгринд и пр.) работают по парам Create-Free (ну или malloc-delete). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 22:13 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, они просто не знаю про FreeAndNil хотя правды для: автопоинты другие костыли имеют SafeMM жёстче работает, он просто память не освобождает, а доступы к ней все запрещает на уровне страниц ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 22:34 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам энди> был вынужден делать freeandnil у объектов так как fastmm энди> показывал утечку указателя, при том что сам объект был убит Для обычных объектов или интерфейсов? Обычно всякие чеккеры (в т.ч. в других ЯП и средах, типа валгринд и пр.) работают по парам Create-Free (ну или malloc-delete). обычные объекты, я вообще интерфейсами практически не пользуюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 22:43 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
kealon(Ruslan)да у них не утечки, у них скорее всего доступ к убитым объектам по типу Бери выше, у них рандомный доступ к памяти: 22437654 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2022, 23:12 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
энди> обычные объекты Это странно. AFAIU, это баг и если у тебя воспроизводится на чистом проекте - вышли им, пусть правят. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 08:43 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov kealon(Ruslan)да у них не утечки, у них скорее всего доступ к убитым объектам по типу Бери выше, у них рандомный доступ к памяти: 22437654 Этот злополучный модуль переписан. Глюков стало меньше. При включении Range Check Error еще меньше. Но к сожалению, глюков все еще много. Особенно в сборке, которая на XE8, прямо какой-то глюконат. На Delphi 2007 глюков меньше, но в последнее время и там почему-то стали чаще. Да, мы все еще продолжаем пилить проект на D2007, время от времени собирая на XE8. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 10:23 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Гаджимурадов Рустам, они просто не знаю про FreeAndNil хотя правды для: автопоинты другие костыли имеют SafeMM жёстче работает, он просто память не освобождает, а доступы к ней все запрещает на уровне страниц Если код кривой, но давно работающий и в нем тупо переписать Free на FreeAndNil - пробовали. Но в этом случае иногда начинают вылезать баги, которых раньше не было (уже не помню пример кода - но такая ситуация была уже - когда срочно пришлось вернуть обратно Free). Так что если нет в планах рефакторить код - лучше не заменять просто так Free на FreeAndNil. А новый код, наверное, лучше писать с FreeAndNil. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 15:01 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 Но в этом случае иногда начинают вылезать баги, которых раньше не было Да-да Не было ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 15:09 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
softwarer Наталья87 Но в этом случае иногда начинают вылезать баги, которых раньше не было Да-да Не было FreeAndNil - хрень полная, которая только вводит в заблуждение. Пример. Есть у нас класс Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Вызываем код с Free: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Срабатывает всё четко, выдает сообщение "5". Теперь вызываем код с FreeAndNil: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Поведение программы меняется - теперь она вообще никаких сообщений не выдает. То есть получается, метод класса Free или Destroy не отрабатывает (а ведь в этих методах могут быть методы освобождения памяти объектов, созданных классом, а не освобождать это уже утечки памяти). И самое главное - поведение программы меняется. И где в первом варианте с Free были баги? Их действительно не было, но с заменой на FreeAndNil они появились (память не освободилась, а ведь там может быть не только динамический массив, но и сложный объект и т. д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:08 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 FreeAndNil - хрень полная, которая только вводит в заблуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:14 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
- ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:17 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Кажется, дошло. Во всем проекте я получается, неверно использую деструкторы. Надо писать c override . Код: pascal 1. 2. 3. 4. 5.
Тогда и FreeAndNil будет нормально работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:17 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 FreeAndNil - хрень полная, которая только вводит в заблуждение. Компьютер тоже - хрень полная. Займитесь чем-нибудь, что Вам по силам. Из соображений деликатности не буду приводить примеров, чем именно. Наталья87 Пример. Есть у нас класс Божечки Я, конечно, подозревал, какой код у вас в приложении, но я вас недооценил. Наталья87 Поведение программы меняется - теперь она вообще никаких сообщений не выдает. И причиной этому не детские ошибки, которые Вы ухитрились влепить в первых пяти строчках своего примера, а хреновый FreeAndNil Вы способны эти ошибки хотя бы найти или Вам помочь? P.S. Способны. Ну.. уже плюс, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:18 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
softwarer Божечки Я, конечно, подозревал, какой код у вас в приложении, но я вас недооценил. Да я теперь сама офигеваю, как 500 тысяч строк кода (рабочего, но написанного в таком стиле) переписывать, написанных за более, чем 10 лет, на правильный стиль. Похоже, надо было раньше придти к вам, пока проект был не таким большим. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:32 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87> 500 тысяч строк кода (рабочего, но Наталья87> написанного в таком стиле) переписывать, Наталья87> написанных за более, чем 10 лет 1. 500 тыщ это не так уж и много, тем паче за 10 лет. 2. Не "рабочего", а запускающегося и как-то работающего. 3. Кажется, я Вам уже говорил - не учитесь методом тыка. Вы, кажется, тогда мне что-то огрызнулись. Нет, методом проб и ошибок тоже можно, конечно, но сильно дольше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:46 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 Кажется, дошло. Во всем проекте я получается, неверно использую деструкторы. Надо писать c override Все они обязаны быть исправлены. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 17:15 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
YuRock Наталья87 Кажется, дошло. Во всем проекте я получается, неверно использую деструкторы. Надо писать c override Все они обязаны быть исправлены. Надо, но все руки не доходят, но буду делать, тут вариантов не остается уже. У меня сейчас накопилось их в программе 2500 штук. Большинство глупые вроде "variable was declared, but never used" или "variable might not be initialized", хотя по коду четко видно, что переменная не может быть не инициализирована. Правда некоторые и по делу, но найди попробуй в такой куче, какие по делу, а какие просто так. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 17:21 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 Надо, но все руки не доходят, но буду делать, тут вариантов не остается уже. Если криво писать "потому что нужен релиз прямо сейчас", руки никогда не дойдут. Они так и будут вечно заняты копанием в куче не будем говорить чего. Наталья87 У меня сейчас накопилось их в программе 2500 штук. (Застрелился второй раз кряду). А я-то, помнится, с ужасом вспоминал, как в джуновские времена пинал своё руководство, пока не добился права исправить порядка пятисот штук, которые они наплодили в проекте. И как после этого вдруг исчезли пара десятков таинственных ошибок, которые всё не получалось исправить. Наталья87 Большинство глупые вроде "variable was declared, but never used" или "variable might not be initialized", хотя по коду четко видно, что переменная не может быть не инициализирована. Правда некоторые и по делу, но найди попробуй в такой куче, какие по делу, а какие просто так. Во-первых, они все по делу. Варнингов просто так в дельфе нет. Если совсем точно - я знаю только один, и я стопроцентно уверен, что у вас его не бывает. А во-вторых, не надо искать и разделять. Надо исправить все и держать по нулям. Строго и без вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 17:37 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 все руки не доходят ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 17:56 |
|
Простейший менеджер памяти на базе VirtualAlloc
|
|||
---|---|---|---|
#18+
Наталья87 Правда некоторые и по делу, но найди попробуй в такой куче, какие по делу, а какие просто так. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 17:57 |
|
|
start [/forum/topic.php?fid=58&msg=40137160&tid=2036594]: |
0ms |
get settings: |
26ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
516ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 654ms |
0 / 0 |