Re[7]: Другой вариант
От: PSP Беларусь  
Дата: 01.08.02 06:37
Оценка: 10 (1)
Здравствуйте CooLer, Вы писали:

CL>Ладно, перед казибобй извинился. Теперь хочу извиниться перед остальными участниками форума, которые читали это сообщение. Действительно, погорячился. Но поймите, этот... хм... товарищ... объясняет мне то, что сам плохо понимает. Причем пишет: "Опыта наберёшся, поймешь". Слюшай, абыдна, чесслово! Вот я ему вкраце объяснил что к чему. Хотя, согласен, можно было и без грубостей.


Ты себя дискредитировал ещё в первой строчке сообщения. Это то же самое, что бороться за женщину, используя кулаки.

Когда я первый раз залез так скажем в "сети" -- это был fidoподобный минский левонет "HOMENET" -- моё первое сообщение тоже было примерно в таком же духе. Знаешь меня невероятно вежливо осадили на место, так что я с тех пор даже не хочу грубить кому-либо в общественных местах.

Или случай недавно был. Елду я с утра невыспавшийся, недовольный жизнью такой с утра, потому что дождь хлещет. Вылажу с женой из трамвая, и тут некий "гольф" меня обдаёт водой из лужи по самую задницу. А я горячая голова. Короче, догоняю машину(на повороте стояла), стучу водиле и говорю в средцах, не буду приводить точных слов, что он очень неприятно пахнущий гомосексуалист. Он говорит мне "Подожжи, ща вернусь." Ну думаю, возвращайся. Он действительно вернулся и извинился. Извинился и потому что лужу эту не заметил. Ну что ж, я тоже в ответ извинился. Мораль: нечего грубить вообще.

Да и пишешь ты в общественных местах, читает ведь не только IT и квазибоба, но ещё и много других людей. И им неприятно весь этот нехороший разговор читать. То есть ты пытаясь достать одного, достаёшь многих.
Всегда Ваш, PSP.
Re[3]: memory leaks!
От: PSP Беларусь  
Дата: 01.08.02 06:47
Оценка: 18 (1)
Здравствуйте CooLer, Вы писали:


CL>Правда два memory leaks починить не удалось: это экземпляры классов CWinThread и CMainFrame. Видимо при звершении приложения не вызывается MFC код, который отвечает за их убиение (я вызываю PostQuitmessage). Подскажите, затрагивалась ли такая тема?


Это неправильно. надо послыать WM_CLOSE MainFrame-у
Всегда Ваш, PSP.
Re[8]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 08:00
Оценка: -1
Здравствуйте SergH, Вы писали:

SH>Здравствуйте CooLer, Вы писали:


CL>>Многоуважаемый казибоба! Приношу вам свои извинения за грубые выражения, использованные по отношению к вам. Обещаю, что больше этого не повториться.


CL>>P.S. А все же, по поводу процессов я прав, а?


SH>Нет.


SH>Твои фактические ошибки в описании механима IT уже описал (неужели действительно программист? ), но главного почему-то не сказал.


SH>Я думаю, что под словом "память" уважаемый kaziboba имел ввиду оперативную память и файлы подкачки, которые действительно одни на всех (даже на Win 2000, честное слово). И, как обычно, чем больше общесистемных ресурсов (в данном случае памяти) занимает твоя программа, тем меньше остаётся остальным... Как на производительность системы влияет забивание оперативки понятно, наверное, всем, с файломи подкачки сложнее. Тестов не проводил, но, сомневаюсь, что от распухания файлов подкачки система будет работать быстрее. Они всё-таки не просто так лежат на диске, система их иногда читает, пишет и т.д.


Разве я говорил что-то, притиворечащее этому? Вам, уважаемый SergH, было бы нелишним почитать самые первые сообщение. Речь то ведь идет об утечках памяти. И наш спор с казибобой был основан на том, надо ли ловить утечки памяти или нет. Казибоба кричит, что надо обязательно, т.к. память одна на всех. Я же говорю, что необязательно, т.к. эти утечки затрагивают только адресное пространство процесса и после его уничтожения больше никого не волнуют.

SH>P.S. А чего ты так наезжаешь на ядро Win 9x? Ты его дизассемблировал и обнаружил, все те ужастные факты о которых поведал нам? Если нет, то перед Microsoft извиняться необязательно (разве что IT попросит ), но на будующее таких реплик лучше не кидать.


Во-первых тет все ясно без дизасемблирования, а во-вторых это мое субъективное мнение. Сейчас сиже под Win2000: с утра загрузил — вечером выключил. А раньше (под 98, позже под Me): с утра включил и весь день перезагружаю Win9x держится только если весь дегь сидеть в блокноте и сапере
Кто не согласен — пожалуйста, спорить не буду. Опять же, почитайте Рихтера, он в самом начале говорит (цитирую): "Microsoft намерена ликвидировать ядро Windows 98, поскольку его доработка до уровня ядра Windows 2000 потребовала бы слишком много усилий..." Ну что? Какое ядро лучше?

SH>P.P.S. Я пишу о файлах подкачки во множественном числе для большей академичности. Люди говорят что их можно сделать несколько и раскидать по разным дискам для ускорения работы. Но даже в этом случае это будет общесистемный ресурс, а не отдельный на каждый процесс.


См. выше...
"Выше голову" — сказл палач, надевая петлю
Re[8]: Другой вариант
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 08:02
Оценка:
Здравствуйте Vovkos, Вы писали:

V>Здравствуйте CooLer, Вы писали:


CL>>Ладно, перед казибобй извинился. Теперь хочу извиниться перед остальными участниками форума, которые читали это сообщение. Действительно, погорячился. Но поймите, этот... хм... товарищ... объясняет мне то, что сам плохо понимает. Причем пишет: "Опыта наберёшся, поймешь". Слюшай, абыдна, чесслово! Вот я ему вкраце объяснил что к чему. Хотя, согласен, можно было и без грубостей.


CL>>А все-таки, уважаемый IT, рассудите: кто прав? Вы же серьезный человек, вероятно программист, должны же знать!


CL>>А IP банить не надо... Я без этого сайта пропаду. Тем более что айпишник у меня статический...


V>Тебе б кстати самому не мешало бы Рихтера перечитать...

V>В той пурге что ты нагнал про процессы и адресные пространства внятно прозвучали только оскорбления в адрес казибобы...

А вэтом сообщении внятно прозвучали только претензии ко мне. По какому поводу претензии — непонятно. Конкретно что-то не нравится — так и скажи — обсудим.
"Выше голову" — сказл палач, надевая петлю
Re[7]: memory leaks!
От: kaziboba  
Дата: 01.08.02 08:13
Оценка:
Если твоя прога работает 24 часа в сутки, и она не освобождает память (не при выходе, а в процессе работы), то в результате у тебя кончится виртуальная память. К чему ты написал мне про процессы, непонятно

Здравствуйте CooLer, Вы писали:

CL>Многоуважаемый казибоба! Приношу вам свои извинения за грубые выражения, использованные по отношению к вам. Обещаю, что больше этого не повториться.


CL>P.S. А все же, по поводу процессов я прав, а?
Re[8]: Другой вариант
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 08:17
Оценка:
Здравствуйте IT, Вы писали:

IT>Здравствуйте CooLer, Вы писали:


CL>>А все-таки, уважаемый IT, рассудите: кто прав? Вы же серьезный человек, вероятно программист, должны же знать!


IT>Возможно и программист, может и знаю, но ни за знания, ни за незнания тут никто ни на кого не наезжает.


IT>Вы с казибобой оба хороши.


K>>Адресное протранство для каждого процесса одно, но память одна на всех.


IT>Выражаться надо точнее. Адресное пространсво и память по большому счёту это одно и тоже. Даже по маленькому между ними разницы почти нет. Можно даже сказать, что процессу выделяется виртуальная память из физического адресного пространства.


Простите, но при всем моем уважении к вам не могу согласиться полностью. Адресное пространство — всегда память. Но память не всегда адресное пространство. Память станет адресным пространством когда ее "передадут" процессу в "виртуальном" виде. По поводу посдледней фразы не согласен, что память выделяется из физического адресного пространства. Все-таки физическая память — это, прежде всего, оперативка. А ведь есть еще файлы подкачки... Язык не поворачивается назвать их "физической" памятью.

CL>>Теперь дальше. Помимо обычной памяти, которой всегда мало Windows использует т.н. файл подкачки. Поэтому памяти получается довольно много.


IT>Windows может использовать не только файл подкачки, есть ещё проецируемые в память файлы, на которых собственно и базируется загрузка модулей в память.


Э-э-э-э... кажется мы друг друга не поняли... Я говорю о том, как система увеличивает объем доступной памяти путем создания файлов подкачки. А проецируемые в память файлы это, ИМХО, несколько другое...

CL>>Теперь подходим к самому интересному. Созданию процесса. Итак, при создании процесса система выделяет опеределенное количество памяти (обычно это несколько гигабайт),...


IT>Это не верно с самого начала. Система не может выделить несколько гигабайт памяти для каждой задачи. Система создаёт адресное пространство для процесса (ну типа записывает у себя на бумажке, что этому чуваку выделено 2 гига) и резервирует в нём регион адресов размером, достаточным для загрузки EXE модуля. Никакая физическая память при этом ещё не трогается.


О трогании физической памяти я и не говорил ничего. Я о другом. Почитайте, например, какую нибудь "ассемблерную" книжку по защищенному режиму процессора. Среди прочего там сказано, что каждой задаче выделяется по 4 Гб. Но это не значит, что оно выделяется физически (памяти такой в общем случае просто ни у кого нет). И это не значит, что программы займет все 4 Гб. Так же и тут. Если сказано, например, 2 Гб, значит процесс может занимать 2 Гб. Т.е. размер кода+кучи+стека+(может еще чего?) должно быть не больше 2 Гб. А если ему нужно только 500 Кб, никто ему специально отрезать 2 Гб не будет.

IT>И вообще, выделение процессу физических страниц памяти и все остальные разговоры о памяти это абсолютно разные вещи, никак не связанные между собой. Процесс без понятия когда и где ему выделили память под его виртуальные адреса.


Никто и не утверждает обратного.

CL>>затем загружает туда код из исполняемого файла, туда же складывает все используемые DLL, создает HANDLE процесса, затем создает первый поток со своим HANDLE-ом. С этого момента процесс считается выполняющимся и его потокам начинает выделятся процессорное время. Замечу, что в Микрософт я не работаю, поэтому в описаном выше алгоритме могут быть допущены некоторые ошибки (весьма незначительные ).


IT>Никто никуда специально ничего не загружает. EXE-модуль проецируется на адресное пространство процесса с помощью механизма проецируемых в память файлов. Это тоже формальность, система просто отмечает что в данном процессе такие-то адреса следует подгружать не из страничного файла, а прямо из EXE-модуля. Далее, похожим, но несколько отличным способом загружаются DLL. После всего этого система тупо передаёт управление в точку входа в EXE-модуль. Выделение же физической памяти программе производится системой по мере необходимости автоматически.


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

IT>[skip]


CL>>Теперь поговорим о завершении процессов. После того как умерли все потоки процесса, система начинает погребение процесса. Для этого уменьшаются счетчики DLL, высвобождаются занятые ресурсы (мьютексы, файлы и т.п.) и т.д. После завершения всего этого, все адресное пространство процесса высвобождается. Т.е. все memory leaks, были они или нет, просто перестают существовать вместе с процессом.


IT>Тут трудно с чем-то поспорить.


Хоть за это спасибо

CL>>Правда все это верно только для Windows NT/2000/XP, т.к. ОСи все-таки серверные и ядро у них соответствующее. А вот в Windows 95/98/Me ядро фиговенькое, поэтому один процесс может испоганить всю систему. Спорим на ящик пива, что у тебя Windows 95/98/Me! (А может и вобще 3.11 )


IT>Оно не фиговенькое, оно совместименькое с MS DOS. Знаешь такую операционку? BTW, ничего подобного по своим масштабам никогда ещё не было и вряд ли уже будет. За 7-8 лет неутомимые программеры наколбасили столько разнообразного кода для реального режима процессора, что сделать операционку, обеспечивающую приемлемую с ним совместимость могла только MS со своими бабками и многотысячным штатом программеров.


Ладно, я уже сказал, любишь 9x — пожалуйста. А у меня оно что-то больно часто виснет

CL>>Кстати, а ты читал Рихтера? Могу поспорить, что не только не читал, но и не слышал о таком. Ну, признайся чесно!


IT>Давай-ка, и ты тоже достань его с полки, стряхни пыль и перечитай любимые главы Мне, кстати, тоже надо бы, а то ведь наверняка тоже чего-нибудь напутал. :-

Э, нет! Он у меня на полке никогда не лежит. Всегда под рукой, на столе. И сейчас я его, кстати, в очередной раз перечитываю.
"Выше голову" — сказл палач, надевая петлю
Re[8]: Другой вариант
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 08:17
Оценка:
Здравствуйте PSP, Вы писали:

PSP>Здравствуйте CooLer, Вы писали:


CL>>Ладно, перед казибобй извинился. Теперь хочу извиниться перед остальными участниками форума, которые читали это сообщение. Действительно, погорячился. Но поймите, этот... хм... товарищ... объясняет мне то, что сам плохо понимает. Причем пишет: "Опыта наберёшся, поймешь". Слюшай, абыдна, чесслово! Вот я ему вкраце объяснил что к чему. Хотя, согласен, можно было и без грубостей.


PSP>Ты себя дискредитировал ещё в первой строчке сообщения. Это то же самое, что бороться за женщину, используя кулаки.


PSP>Когда я первый раз залез так скажем в "сети" -- это был fidoподобный минский левонет "HOMENET" -- моё первое сообщение тоже было примерно в таком же духе. Знаешь меня невероятно вежливо осадили на место, так что я с тех пор даже не хочу грубить кому-либо в общественных местах.


PSP>Или случай недавно был. Елду я с утра невыспавшийся, недовольный жизнью такой с утра, потому что дождь хлещет. Вылажу с женой из трамвая, и тут некий "гольф" меня обдаёт водой из лужи по самую задницу. А я горячая голова. Короче, догоняю машину(на повороте стояла), стучу водиле и говорю в средцах, не буду приводить точных слов, что он очень неприятно пахнущий гомосексуалист. Он говорит мне "Подожжи, ща вернусь." Ну думаю, возвращайся. Он действительно вернулся и извинился. Извинился и потому что лужу эту не заметил. Ну что ж, я тоже в ответ извинился. Мораль: нечего грубить вообще.


PSP>Да и пишешь ты в общественных местах, читает ведь не только IT и квазибоба, но ещё и много других людей. И им неприятно весь этот нехороший разговор читать. То есть ты пытаясь достать одного, достаёшь многих.


По-моему я уже извинился
"Выше голову" — сказл палач, надевая петлю
Re[8]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 08:25
Оценка:
Здравствуйте kaziboba, Вы писали:

K>Если твоя прога работает 24 часа в сутки, и она не освобождает память (не при выходе, а в процессе работы), то в результате у тебя кончится виртуальная память. К чему ты написал мне про процессы, непонятно


А теперь, казибоба, пожалуйста, потрудись почитать самое первое сообщение. Я там сказал примерно так: "Есдинственное когда это важно, если ось 95/98/Me (они очищают толь теоретически; практически помогает только ребут) или программа должна непрерывно работать очень долго и утечки памяти могут повредить работе."

По поводу первого возникли всякие возражения, по этому поводу я уже немало отписал...

А вот про второе как раз твое нынешнее сообщение. Итак, зачем ты его писал?

K>Здравствуйте CooLer, Вы писали:


CL>>Многоуважаемый казибоба! Приношу вам свои извинения за грубые выражения, использованные по отношению к вам. Обещаю, что больше этого не повториться.


CL>>P.S. А все же, по поводу процессов я прав, а?
"Выше голову" — сказл палач, надевая петлю
Re[2]: memory leaks!
От: Kurchenko Oleg E. Россия  
Дата: 01.08.02 08:29
Оценка:
Здравствуйте Reverend JAHncle, Вы писали:

RJ>Я прописал в InitInstance() строчку:


RJ>_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_DEBUG );


RJ>Где-то здесь кстати и вычитал. При компиляции моя прога выдает несколько memory leaks на оператор new, хотя он точно удаляется оператором delete. Что вы на это скажете, уважаемые?


А вот тут не помешал бы кусочек кода.
Инициализация, использование и удаление
Crescite, nos qui vivimus, multiplicamini
Re[9]: Другой вариант
От: PSP Беларусь  
Дата: 01.08.02 08:36
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Здравствуйте PSP, Вы писали:


PSP>>Здравствуйте CooLer, Вы писали:


CL>>>Ладно, перед казибобй извинился. Теперь хочу извиниться перед остальными участниками форума, которые читали это сообщение. Действительно, погорячился. Но поймите, этот... хм... товарищ... объясняет мне то, что сам плохо понимает. Причем пишет: "Опыта наберёшся, поймешь". Слюшай, абыдна, чесслово! Вот я ему вкраце объяснил что к чему. Хотя, согласен, можно было и без грубостей.


PSP>>Ты себя дискредитировал ещё в первой строчке сообщения. Это то же самое, что бороться за женщину, используя кулаки.


PSP>>Когда я первый раз залез так скажем в "сети" -- это был fidoподобный минский левонет "HOMENET" -- моё первое сообщение тоже было примерно в таком же духе. Знаешь меня невероятно вежливо осадили на место, так что я с тех пор даже не хочу грубить кому-либо в общественных местах.


PSP>>Или случай недавно был. Елду я с утра невыспавшийся, недовольный жизнью такой с утра, потому что дождь хлещет. Вылажу с женой из трамвая, и тут некий "гольф" меня обдаёт водой из лужи по самую задницу. А я горячая голова. Короче, догоняю машину(на повороте стояла), стучу водиле и говорю в средцах, не буду приводить точных слов, что он очень неприятно пахнущий гомосексуалист. Он говорит мне "Подожжи, ща вернусь." Ну думаю, возвращайся. Он действительно вернулся и извинился. Извинился и потому что лужу эту не заметил. Ну что ж, я тоже в ответ извинился. Мораль: нечего грубить вообще.


PSP>>Да и пишешь ты в общественных местах, читает ведь не только IT и квазибоба, но ещё и много других людей. И им неприятно весь этот нехороший разговор читать. То есть ты пытаясь достать одного, достаёшь многих.


CL>По-моему я уже извинился


Это я так. Мораль басни подытожил.
Всегда Ваш, PSP.
Re[3]: memory leaks!
От: Reverend JAHncle Россия  
Дата: 01.08.02 08:41
Оценка:
Здравствуйте Kurchenko Oleg E., Вы писали:

KOE>А вот тут не помешал бы кусочек кода.

KOE>Инициализация, использование и удаление

Спасибо, баг найден.
Re[6]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 09:45
Оценка:
Здравствуйте Dr_Sh0ck, Вы писали:

DS>Здравствуйте CooLer, Вы писали:


CL>>Эпиграф: С дураком возиться, что в крапиву срать садиться.Народная мудрость.


CL>>Итак, казибоба, ты пытаешься доказать, что память одна на всех. Ну что же, спорить трудно, память действительно одна на всех. Но память тоже разная бывает.


CL>>Итак, разберемся подробнее. Начнем с того, что Windows 32-разрядная операционная система и работает в защищенном режиме процессора. (Судя по твоим высказываниям ты можешь не знать даже таких простых вещей )


CL>>Теперь дальше. Помимо обычной памяти, которой всегда мало Windows использует т.н. файл подкачки. Поэтому памяти получается довольно много.


CL>>Теперь подходим к самому интересному. Созданию процесса. Итак, при создании процесса система выделяет опеределенное количество памяти (обычно это несколько гигабайт), затем загружает туда код из исполняемого файла, туда же складывает все используемые DLL, создает HANDLE процесса, затем создает первый поток со своим HANDLE-ом. С этого момента процесс считается выполняющимся и его потокам начинает выделятся процессорное время. Замечу, что в Микрософт я не работаю, поэтому в описаном выше алгоритме могут быть допущены некоторые ошибки (весьма незначительные ).


CL>>Зачем же я все это рассказывал? Обрати внимание: процессу выделяется отдельное адресное пространство, в котором размещается весь исполняемый код, а также стек и куча. Это адресное пространство отдельное у каждого процесса и в общем случае потоки процесса работают работают исключительно со своим адресным пространством. Да, не спорю, можно залезть и в чужое, но это уже с memory leaks (а значит и с обсуждаемой темой) никак не связано. Т.е. операции типа new/delete работают только со своей кучей. И только так.


CL>>Теперь поговорим о завершении процессов. После того как умерли все потоки процесса, система начинает погребение процесса. Для этого уменьшаются счетчики DLL, высвобождаются занятые ресурсы (мьютексы, файлы и т.п.) и т.д. После завершения всего этого, все адресное пространство процесса высвобождается. Т.е. все memory leaks, были они или нет, просто перестают существовать вместе с процессом.


CL>>Правда все это верно только для Windows NT/2000/XP, т.к. ОСи все-таки серверные и ядро у них соответствующее. А вот в Windows 95/98/Me ядро фиговенькое, поэтому один процесс может испоганить всю систему. Спорим на ящик пива, что у тебя Windows 95/98/Me! (А может и вобще 3.11 )


CL>>Итак, надеюсь я смог продемонстрировать тебе всю твою ущербность и умственную неполноценность.

CL>>Учится тебе еще и учится, ламушок

CL>>Кстати, а ты читал Рихтера? Могу поспорить, что не только не читал, но и не слышал о таком. Ну, признайся чесно!


CL>>Эпилог: Дурака учить, что мертвого лечить.Народная мудрость.


DS>Читал и плевался — чего ты такой агрессивный (кстати, не только ты) Солнечная активность, что ли, влияет. Если что-то имеешь против, то просто скажи это. Неужели надо обязательно человека оскорблять Ты вот сам-то что-нибудь кроме ихтера прочитал... Действительно, "наберьшься опыта — поймешь", что нельзя так с людьми

DS>

Во-первых я уже извинился, так что хватит.
А во-вторых кроме Рихтера я прочитал множество других интересных книжек, таких авторов, как Мешков, Тихомиров, Лейнекер (он же Линекер в другой книжке, а вобще Leinecker), Арчер, Круглински, Уингоу, Шеферд, Янг, Зубков, Шварц, Кристиансен, Черносвитов, Холзнер и некоторых других... Мало?
"Выше голову" — сказл палач, надевая петлю
Re[4]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 09:47
Оценка:
Здравствуйте Dr_Sh0ck, Вы писали:

DS>Здравствуйте CooLer, Вы писали:


CL>>Здравствуйте kaziboba, Вы писали:


K>>>Как это не важно чистить память? Если у тебя работает приложение, и оно отжирает память, то в конечном итоге машина будет тормозить.


CL>>Не, казибоба, ты не прав. Каждому процессу предоставляется свое адресное пространство, так что лики каждоко процесса влияют только на него, т. к. система очищает всю память из-под приложения после его работы. Правда это ДЕЙСТВИЬЕЛЬНО работает только в NT/2000/XP. За остальные не поручусь. Впрочем, это я уже говорил.


K>>>А чтобы поймать все лики, найди все операторы new в проекте, и засунь объекты которые создаются оператором new в смартптр С вероятностью 98% ликов не должно быть.


CL>>И как ты себе это представляешь? У меня в программе оператор new встречается 99 раз. И что я из-за пары глупых ликов буду перекапывать всю программу?


DS>Так делай выводы и используй smart-поинтеры с самого начала


Кстати, по этому поводу хочу привети одну интересную фразу, встреченную тут же, на форуме: "Чем умнее указатель, тем глупее программист"

Делайте выводы, господа!
"Выше голову" — сказл палач, надевая петлю
Re[9]: memory leaks!
От: Владислав Россия  
Дата: 01.08.02 14:44
Оценка: 10 (1)
Здравствуйте CooLer, Вы писали:

CL>Я там сказал примерно так: "Есдинственное когда это важно, если ось 95/98/Me (они очищают толь теоретически; практически помогает CL>только ребут) или программа должна непрерывно работать очень долго и утечки памяти могут повредить работе."


Знаешь, есть ещё одина ситуация, когда это важно.
Вот например, если бы я написал (даже для использования внутри фирмы) какой нибудь модуль или СОМ сервер и он leaks'ы плодил, так всему отделу хорошее настроение на день было бы обеспечено , а мне соответственно плохое.
Если у тебя не так, то ты просто счастливый человек.
Suum cuique (лат.)
Re[9]: memory leaks!
От: SergH Россия  
Дата: 01.08.02 20:00
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Разве я говорил что-то, притиворечащее этому? Вам, уважаемый SergH, было бы нелишним почитать самые первые сообщение. Речь то ведь идет об утечках памяти. И наш спор с казибобой был основан на том, надо ли ловить утечки памяти или нет. Казибоба кричит, что надо обязательно, т.к. память одна на всех. Я же говорю, что необязательно, т.к. эти утечки затрагивают только адресное пространство процесса и после его уничтожения больше никого не волнуют.


Ох. Как объяснил тебе IT, при создании приложения память для него (те самые "несколько гигабайтов") нигде не выделяется. Даже в файле подкачки. Она выделяется только под запрос. Соответственно, если приложение использует 1 Мб памяти, то для него будет выделено 1 Мб, если 100, то 100. Если твоё приложение выделит полтора гигабайта и "забудет" про них, это повлияет на всю систему, т.к. системе придётся держать в файле подкачки лишних полтора гигобайта. (А представь себе, было бы не так.. Т.е. если бы на каждое приложение приходилось выделять по 2 Гб.. Какой у тебя размер диска? И где же хранить эти самые гигобайты?). Адресное пространство это ВИРТУАЛЬНАЯ память. На ней далеко не уедешь, она отображается на ФИЗИЧЕСКУЮ. А вот физическая у всех общая. И чем больше твоё приложение выделяет памяти в адресном пространстве, тем больше тратится физической памяти.

SH>>P.S. А чего ты так наезжаешь на ядро Win 9x? Ты его дизассемблировал и обнаружил, все те ужастные факты о которых поведал нам? Если нет, то перед Microsoft извиняться необязательно (разве что IT попросит ), но на будующее таких реплик лучше не кидать.


CL>Во-первых тет все ясно без дизасемблирования, а во-вторых это мое субъективное мнение. Сейчас сиже под Win2000: с утра загрузил — вечером выключил. А раньше (под 98, позже под Me): с утра включил и весь день перезагружаю Win9x держится только если весь дегь сидеть в блокноте и сапере


А у меня Win 98 держится. Точнее, держалась, когда я в ней работал.

CL>Кто не согласен — пожалуйста, спорить не буду. Опять же, почитайте Рихтера, он в самом начале говорит (цитирую): "Microsoft намерена ликвидировать ядро Windows 98, поскольку его доработка до уровня ядра Windows 2000 потребовала бы слишком много усилий..." Ну что? Какое ядро лучше?


Я не спою, что NT/2000 лучше. Но ты говорил, что Win 9x не очищает ресурсы после завершения приложения — довольно серьёзное обвинение. Если верить тому же Рихтеру это не так.
Делай что должно, и будь что будет
Re[10]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 21:29
Оценка:
Здравствуйте SergH, Вы писали:

SH>Здравствуйте CooLer, Вы писали:


CL>>Разве я говорил что-то, притиворечащее этому? Вам, уважаемый SergH, было бы нелишним почитать самые первые сообщение. Речь то ведь идет об утечках памяти. И наш спор с казибобой был основан на том, надо ли ловить утечки памяти или нет. Казибоба кричит, что надо обязательно, т.к. память одна на всех. Я же говорю, что необязательно, т.к. эти утечки затрагивают только адресное пространство процесса и после его уничтожения больше никого не волнуют.


SH>Ох. Как объяснил тебе IT, при создании приложения память для него (те самые "несколько гигабайтов") нигде не выделяется. Даже в файле подкачки. Она выделяется только под запрос. Соответственно, если приложение использует 1 Мб памяти, то для него будет выделено 1 Мб, если 100, то 100. Если твоё приложение выделит полтора гигабайта и "забудет" про них, это повлияет на всю систему, т.к. системе придётся держать в файле подкачки лишних полтора гигобайта. (А представь себе, было бы не так.. Т.е. если бы на каждое приложение приходилось выделять по 2 Гб.. Какой у тебя размер диска? И где же хранить эти самые гигобайты?). Адресное пространство это ВИРТУАЛЬНАЯ память. На ней далеко не уедешь, она отображается на ФИЗИЧЕСКУЮ. А вот физическая у всех общая. И чем больше твоё приложение выделяет памяти в адресном пространстве, тем больше тратится физической памяти.


О господи! Неужели я говорил что-то противоречащее этому? В том-то и дело, что нет.
Я сиотрю отвечать-то ты горазд. А вот почитать другие сообщения не судьба?
Итак, по поводу этого заявленю рекомендую обратьтся сюда: http://rsdn.ru/forum/message.asp?mid=79325&only
Автор: CooLer
Дата: 01.08.02


SH>>>P.S. А чего ты так наезжаешь на ядро Win 9x? Ты его дизассемблировал и обнаружил, все те ужастные факты о которых поведал нам? Если нет, то перед Microsoft извиняться необязательно (разве что IT попросит ), но на будующее таких реплик лучше не кидать.


CL>>Во-первых тет все ясно без дизасемблирования, а во-вторых это мое субъективное мнение. Сейчас сиже под Win2000: с утра загрузил — вечером выключил. А раньше (под 98, позже под Me): с утра включил и весь день перезагружаю Win9x держится только если весь дегь сидеть в блокноте и сапере


SH>А у меня Win 98 держится. Точнее, держалась, когда я в ней работал.


Да, и вынь 98 может держаться и 2000 может упасть (и такое бывало). Но ядро 98 в принципе менее защищено чем 2000. ТО ЕСТЬ ОНО ТАК УСТРОЕНО! И ничего с этим не поделаешь. Если под 98 тихо сидеть в сапере — ничего не случится. Но если начинаешь отлаживать каую-нибудь глючную прогу, которая активно работаем с потоками, памятью, системными ресурсами и т.п. — жди беды.
Еще раз повторю — это мое субъективное мнение, ты можешь быть как согласен, так и не согласен.

SH>

CL>>Кто не согласен — пожалуйста, спорить не буду. Опять же, почитайте Рихтера, он в самом начале говорит (цитирую): "Microsoft намерена ликвидировать ядро Windows 98, поскольку его доработка до уровня ядра Windows 2000 потребовала бы слишком много усилий..." Ну что? Какое ядро лучше?

SH>Я не спою, что NT/2000 лучше. Но ты говорил, что Win 9x не очищает ресурсы после завершения приложения — довольно серьёзное обвинение. Если верить тому же Рихтеру это не так.


Когда я сказал, что "Win 9x не очищает ресурсы после завершения приложения"? Покажи мне это место в форуме! Эх, твою печаль! Я лишь сказал, что эти винды очищают память ТЕОРЕТИЧЕСКИ, равно как 2000 очищает память ПРАКТИЧЕСКИ. Я верю — вин98 тоже ПЫТАЕТСЯ очистить памаять (кстати не только память, но и системные ресурсы!). Как правило ей это удается, но мой опыт показывает, что не всегда и не полностью.

И снова: Это всего лишь мое субъективное мнение... и т.д.

И на закуску. Чтобы доказать глючность 9х винды сделай такое:

1. Создай файл с расширением .COM
2. Запиши туда лишь три байта: FA EB FE (это хекс)
3. Запусти в Вынь9х. Висит? Висит! Причем висит надежно в любой версии от DOS 1.0 до Windows Me
4. Проделай тот же фокус в NT. Первый раз я думал что она повиснет, настолько безупречным мне казался этот FAEBFE. Нет, она выстояла! Это радует

P.S. FAEBFE это не набор байтов от фонаря. В них лежит глубокий смысл. Если интересно, могу поведать в форуме Assembler
"Выше голову" — сказл палач, надевая петлю
Re[11]: memory leaks!
От: SergH Россия  
Дата: 01.08.02 21:42
Оценка:
Здравствуйте CooLer, Вы писали:

CL>О господи! Неужели я говорил что-то противоречащее этому? В том-то и дело, что нет.


Ты писал, что лики в твоём приложении не влияют на систему. Я написал почему влияют.

CL>Я сиотрю отвечать-то ты горазд. А вот почитать другие сообщения не судьба?


А хамить не надо. Ты и так мне уже кучу нулей поставил, видно обиделся

CL>Итак, по поводу этого заявленю рекомендую обратьтся сюда: http://rsdn.ru/forum/message.asp?mid=79325&only
Автор: CooLer
Дата: 01.08.02


Кстати, "Физическую память следует расматривать как данные, хранимые в дисковом файле со страничной структурой" Рихтер, четвёртое издание, Питер + Русская Редакция, стр. 322, первая строчка.

Это по поводу "язык не поворачивается" в ответе IT.
Делай что должно, и будь что будет
Re[12]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 21:52
Оценка:
Здравствуйте SergH, Вы писали:

SH>Здравствуйте CooLer, Вы писали:


CL>>О господи! Неужели я говорил что-то противоречащее этому? В том-то и дело, что нет.


SH>Ты писал, что лики в твоём приложении не влияют на систему. Я написал почему влияют.


Нет, не влияют. Хотя бы потому что я сижу под Windows 2000. Возражения не принимаются

CL>>Я сиотрю отвечать-то ты горазд. А вот почитать другие сообщения не судьба?


SH>А хамить не надо. Ты и так мне уже кучу нулей поставил, видно обиделся


Конечно обиделся! Я потом и кровью выбиваю каждую оценку и набрал всего 16, а казибоба получил разом 18 только за то, что сказал полнейшую глупость и нашелся "большой" человек, который тоже так считает

CL>>Итак, по поводу этого заявленю рекомендую обратьтся сюда: http://rsdn.ru/forum/message.asp?mid=79325&only
Автор: CooLer
Дата: 01.08.02


SH>Кстати, "Физическую память следует расматривать как данные, хранимые в дисковом файле со страничной структурой" Рихтер, четвёртое издание, Питер + Русская Редакция, стр. 322, первая строчка.


Не та цитата!

SH>Это по поводу "язык не поворачивается" в ответе IT.


В данном случае действительно, не прав. Исправлюсь!
"Выше голову" — сказл палач, надевая петлю
Re[13]: memory leaks!
От: SergH Россия  
Дата: 01.08.02 22:05
Оценка:
Здравствуйте CooLer, Вы писали:

CL>Нет, не влияют. Хотя бы потому что я сижу под Windows 2000. Возражения не принимаются


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

SH>>А хамить не надо. Ты и так мне уже кучу нулей поставил, видно обиделся


CL>Конечно обиделся! Я потом и кровью выбиваю каждую оценку и набрал всего 16, а казибоба получил разом 18 только за то, что сказал полнейшую глупость и нашелся "большой" человек, который тоже так считает


Не такой уж я и большой.. Почему поставил — объяснил в соседнем топике. Раз пошла такая пьянка сейчас поищу, за что тебе можно поставить..

P.S. И не относись ты так серьёзно к оценкам.. Вон сколько IT набрал за http://www.rsdn.ru/forum/message.asp?mid=61975
Автор: IT
Дата: 08.06.02
— больше чем у меня всего.. И правильно, между прочим, я ему тоже поставил.. На фоне разбирательства с goto это классно смотрелось
Делай что должно, и будь что будет
Re[14]: memory leaks!
От: CooLer Россия http://bestsoft.far.ru
Дата: 01.08.02 22:18
Оценка:
Здравствуйте SergH, Вы писали:

SH>Здравствуйте CooLer, Вы писали:


CL>>Нет, не влияют. Хотя бы потому что я сижу под Windows 2000. Возражения не принимаются


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


Нет, ты несколько утрируешь. Я отнюдь не считаю эту систему святой, хотя среди прочих форточек она мне наиболее приятна. Да и не говорил я, что процессы не взаимодействуют. Еще в самом первом сообщении я вскользь упомянул, что один процесс вполне пожет "подложить свинью" другому. Кстати пресловутый Рихтер тоже весьма захватывающе повествует о том, как можно ронять чужие процессы. НО! Как говорится, зри в корень! А в корне у нас memory leaks. те самые, которые остаются ото всяких new и прочих malloc. Неужели обычный оператор new может испортить чужой процесс (сказать "адресное пространство чужого процесса" я уже не рискую )? Я в это просто не верю. И, кстати, если ты не веришь мне, послушай хотя бы IT. Вот цитата (http://rsdn.ru/forum/message.asp?mid=79179&only):
Автор: IT
Дата: 01.08.02


IT>CL>Теперь поговорим о завершении процессов. После того как умерли все потоки процесса, система начинает погребение процесса. Для этого уменьшаются счетчики DLL, высвобождаются занятые ресурсы (мьютексы, файлы и т.п.) и т.д. После завершения всего этого, все адресное пространство процесса высвобождается. Т.е. все memory leaks, были они или нет, просто перестают существовать вместе с процессом.


IT>Тут трудно с чем-то поспорить.


Есть возражения?

SH>>>А хамить не надо. Ты и так мне уже кучу нулей поставил, видно обиделся


CL>>Конечно обиделся! Я потом и кровью выбиваю каждую оценку и набрал всего 16, а казибоба получил разом 18 только за то, что сказал полнейшую глупость и нашелся "большой" человек, который тоже так считает


SH>Не такой уж я и большой.. Почему поставил — объяснил в соседнем топике. Раз пошла такая пьянка сейчас поищу, за что тебе можно поставить..


SH>P.S. И не относись ты так серьёзно к оценкам.. Вон сколько IT набрал за http://www.rsdn.ru/forum/message.asp?mid=61975
Автор: IT
Дата: 08.06.02
— больше чем у меня всего.. И правильно, между прочим, я ему тоже поставил.. На фоне разбирательства с goto это классно смотрелось
"Выше голову" — сказл палач, надевая петлю
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.