Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Показания: Запускаем экзешник, закрываем его. Далее пытаемся удалить его - невозможно до перезапуска компа. Статические переменные - числовые переменные и массивы, строковые массивы, ссылки на управляемые объекты. Все массивы []delete. Объекты вроде сами должны, но на всяк случай ссылки null. Что еще этим стат. переменным надо? Как от них избавится?, в смысле, чтобы они освободили память. "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 18:18 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBA, статические переменные - не при делах. при завершении процесса память процесса освобождается ОС и ей глубоко насрать, что в них записано. ExitProcess(0) - завершает приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 18:58 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
ИзопропилExitProcess(0) - завершает приложение?Нет, очищаем все и выходим из main. До введения стат переменных этого не было. Посмотрю, что есть ExitProcess(0). В моей литературе этого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:12 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Да, видимо это мой случайTherefore, if you do not know the state of all threads in your process, it is better to call TerminateProcess than ExitProcess . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:20 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBA, ты бред написал, статические переменные ни при чем. Процесс или завершился или нет, если завершился, то EXE можно удалить, иначе нельзя, т.к. EXE открыт, т.к. процесс не завершился. Смотри диспетчером в процессах, похоже у тебя или процесс подвис или удаление до завершения процесса. PS Изнутри процесса удалить его EXE невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:34 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
PPS Еще антивирусы могут "помогать", попробуй антивирус отключить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:35 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Dima TYUBA, ты бред написал, статические переменные ни при чем. Процесс или завершился или нет, если завершился, то EXE можно удалить, иначе нельзя, т.к. EXE открыт, т.к. процесс не завершился. Смотри диспетчером в процессах, похоже у тебя или процесс подвис или удаление до завершения процесса. PS Изнутри процесса удалить его EXE невозможно.Эт понятно. А на счет бреда, то не всегда то, что непонятно, является бредом. Еще раз - без стат переменных, пред. версия нормально работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:57 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBA, ОК, раз ты упорствуешь, что это не бред, то попробуй сделать простой тесткейс. Поможем проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 20:13 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAА на счет бреда, то не всегда то, что непонятно, является бредом. Еще раз - без стат переменных, пред. версия нормально работает. Наверно знаешь анекдот "... Вывод: таракан без ног не слышит", у тебя тоже самое. Есть простая истина: "Если программа выполняет мистические действия: значит ты написал что-то невероятно глупое", так оно всегда и бывает, ищи ошибку в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 20:30 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Dima T, чушь. это нормальный и обычный процесс. Для подобных целей предусмотрена отладка. Еще не было программы и программиста, в и у которых не было бы ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 20:44 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBADima T, чушь. это нормальный и обычный процесс. Для подобных целей предусмотрена отладка. Еще не было программы и программиста, в и у которых не было бы ошибок. Если у тебя все правильно, то давай простой пример кода демонстрирующий проблему. Поможем решить. PS А лучше оставь до утра, голова свежее будет. Я прямо сейчас тоже на мистику нарвался, ищу где накосячил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 20:51 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBA, так ExitProcess(0) - завершает процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 21:03 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
ИзопропилYUBA, так ExitProcess(0) - завершает процесс?Нет, просто из main выходим, предварительно все уничтожая. Уже посмотрел про ExitProcess(0). Имхо, там наверное надо TerminateProcess. MSDNTherefore, if you do not know the state of all threads in your process, it is better to call TerminateProcess than ExitProcess . А я, именно не знаю, что там за процессы в объектах, хотя очистка ресурсов в MSDN для них описана, и все делается. Попробую и то, и другое. Да, и почти все процессы (потоки) в управляемом коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 21:48 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAИзопропилYUBA, так ExitProcess(0) - завершает процесс?Нет, просто из main выходим, предварительно все уничтожая. а попробовать - пытался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 21:59 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Изопропил, сегодня невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 22:06 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBA, чувак, посмотри в taskmanager. Скачай себе старые добрые утилиты типа ProcessExplorer и посмотри что там к чему. Дай скриншоты. P.S. А то получается как в фильме - "Ничего милая, кроме ваших слез, к делу подшить нельзя..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 22:16 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAПоказания: Запускаем экзешник, закрываем его. Далее пытаемся удалить его - невозможно до перезапуска компа. Статические переменные - числовые переменные и массивы, строковые массивы, ссылки на управляемые объекты. Все массивы []delete. Объекты вроде сами должны, но на всяк случай ссылки null. Что еще этим стат. переменным надо? Как от них избавится?, в смысле, чтобы они освободили память. Всё проще. Просто твоя программулька не завершается вообще. Только перегрузка её процесс убивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 02:03 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAИзопропилYUBA, так ExitProcess(0) - завершает процесс?Нет, просто из main выходим, предварительно все уничтожая. Уже посмотрел про ExitProcess(0). Имхо, там наверное надо TerminateProcess. Выход из main и завершение процесса -- не одно и то же. Можно выйти из main, но процесс не завершить :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 02:05 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBATherefore, if you do not know the state of all threads in your process, it is better to call TerminateProcess than ExitProcess .Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 05:22 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
CEMbYUBAпропущено... Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран. я ведь исключительно об отладке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 08:47 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
CEMbYUBAпропущено... Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран.Ну это баг в драйвере. Никакие действия в программе не должны приводить к падению системы, а если такое случается - это баг не в программе, я в драйверах/ядре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 12:42 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
BarloneНу это баг в драйвере. Никакие действия в программе не должны приводить к падению системы, а если такое случается - это баг не в программе, я в драйверах/ядре.Почему? Если я инициирую работу с драйвером устройства, в каком-то треде общаюсь с ним, он использует память приложения. Потом я убиваю процесс, в этот момент драйвер обращается к памяти приложения, которая уже битая. Ну, может есть какой-то нормальный способ это дело отловить со стороны драйвера, я не знаю. Но вроде, по-нормальному, я должен утилизировать нормально всё, что сам создал в своём процессе.Изопропиля ведь исключительно об отладке...ну ок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 13:07 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
CEMbПотом я убиваю процесс, в этот момент драйвер обращается к памяти приложения драйвер вообще-то в курсе, что приложение завершается и не просто так неубиваемые процессы возникают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 13:18 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Да просто висит деструктор одного из этих глобальных объектов. Эти деструкторы вызываются после выхода из main. Почему висит - куча возможных причин: мертвая блокировка, бесконечный цикл, ожидание ввода/вывода, ожидание завершение других потоков и еще миллион. Отключать по одному объекту, определить в каком, и потом отладить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 14:41 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyОтключать по одному объекту, определить в каком, и потом отладить. Или проще: снять ProcessExplorer-ом стэк в этот момент и сразу найти нужный по карте. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 15:21 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну это спорно что проще в контексте этой темы )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 15:35 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAПоказания: Запускаем экзешник, закрываем его. Далее пытаемся удалить его - невозможно до перезапуска компа. Статические переменные - числовые переменные и массивы, строковые массивы, ссылки на управляемые объекты. Все массивы []delete. Объекты вроде сами должны, но на всяк случай ссылки null. Что еще этим стат. переменным надо? Как от них избавится?, в смысле, чтобы они освободили память. "Есть многое на свете, друг Горацио, что и не сразу в голову придет." М. Твен "Приключения Геккельбери Финна" Ты в курсе, что ты создал демона? Я даже не знаю, что ты теперь будешь делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 17:47 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Последовал совету Изопропила - TerminateProcess и ExitProcess. Упало соседнее приложение, к которому, через WinAPI DLL цеплялось мое. До введения стат переменных, я с этим приложением не работал, хотя подключение было. Стат. переменные тут действительно не при чем. Короче, вообще не мои дела.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 23:34 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAк которому, через WinAPI DLL цеплялось мое. поконкретнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 23:43 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
ИзопропилпоконкретнееОбычная DLL в стиле WinAPI, обычные C-экспорт функции. Что там внутри одному создателю известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 00:04 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Изопропилдрайвер вообще-то в курсе, что приложение завершаетсяНе знал. А как это реализуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 05:49 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAПоследовал совету Изопропила - TerminateProcess и ExitProcess. Упало соседнее приложение, к которому, через WinAPI DLL цеплялось мое. До введения стат переменных, я с этим приложением не работал, хотя подключение было. Стат. переменные тут действительно не при чем. Короче, вообще не мои дела.)Как можно "цепляться" к приложению через dll? COM объект? Какой-то другой механизм IPC? Так то у каждого приложения своя копия dll в собственном адресном пространстве... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 06:21 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAИзопропилпоконкретнееОбычная DLL в стиле WinAPI, обычные C-экспорт функции. Что там внутри одному создателю известно.Отладь то, не знаю что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 06:26 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
BarloneТак то у каждого приложения своя копия dll в собственном адресном пространстве... при желании можно сделать разделяемый сегмент двнных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 09:19 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
CEMbИзопропилдрайвер вообще-то в курсе, что приложение завершаетсяНе знал. А как это реализуется? при завершении процесса все открытые хэндлы закрываются, драйвер получает запросы IRP_MJ_CLOSE, IRP_MJ_CLEANUP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 09:29 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Изопропилпри завершении процесса все открытые хэндлы закрываются, драйвер получает запросы IRP_MJ_CLOSE, IRP_MJ_CLEANUPСпасибо, теперь можно попытаться заставить исправлять багу разработчиков драйвера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 11:01 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
BarloneYUBAПоследовал совету Изопропила - TerminateProcess и ExitProcess. Упало соседнее приложение, к которому, через WinAPI DLL цеплялось мое. До введения стат переменных, я с этим приложением не работал, хотя подключение было. Стат. переменные тут действительно не при чем. Короче, вообще не мои дела.)Как можно "цепляться" к приложению через dll? COM объект? Какой-то другой механизм IPC? Так то у каждого приложения своя копия dll в собственном адресном пространстве...Элементарно, Ватсон.) Таких ДЛЛ полно, без всяких КОМов и межпроцессного взаимодействия. Коллбек - и все дела. А на выходе сплошной АНСИ С.)) Потом тебе какой нибудь указатель сунуть, и ты уже в их потоке и забыть написать в доках. Это так, к примеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 18:33 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Предлагаю наркоманов все же банить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 19:47 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
SiemarglПредлагаю наркоманов все же банить Ну, мы не ГИБДД, у нас наркоманам можно ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 06:01 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBABarloneпропущено... Как можно "цепляться" к приложению через dll? COM объект? Какой-то другой механизм IPC? Так то у каждого приложения своя копия dll в собственном адресном пространстве...Элементарно, Ватсон.) Таких ДЛЛ полно, без всяких КОМов и межпроцессного взаимодействия. Коллбек - и все дела. А на выходе сплошной АНСИ С.)) Потом тебе какой нибудь указатель сунуть, и ты уже в их потоке и забыть написать в доках. Это так, к примеру.Какой коллбек? Как он в другой процесс попадет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 13:36 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
ИзопропилBarloneТак то у каждого приложения своя копия dll в собственном адресном пространстве... при желании можно сделать разделяемый сегмент данныхМожно. Только как завершение процесса приведет к падению соседнего? Разделяемый сегмент у него как был так и остался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 13:39 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
BarloneКакой коллбек? Как он в другой процесс попадет?Вы первоначально говорили о "Как можно "цепляться" к приложению через dll?" Если, например, организованы коллбеки из ДЛЛ в приложение "хозяин", то уже ваша программа может цепляться (общаться) через эту ДЛЛ с таким приложением. Далее, вам передается ссылка на объект в ДЛЛ, и вы попадаете, (корректнее сказать - работаете) с другим процессом. Вы и создать объект в ДЛЛ можете через вызов какой-либо ее функции - у вас ANSI C - никаких new нет. Что касается интерфейса ДЛЛ для работы с оборудованием, то это пром стандарт, и интерфейс не должен выходить за рамки ANSI С. Что внутри никак не регламентируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 16:44 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
YUBAВы первоначально говорили о "Как можно "цепляться" к приложению через dll?" Если, например, организованы коллбеки из ДЛЛ в приложение "хозяин", то уже ваша программа может цепляться (общаться) через эту ДЛЛ с таким приложением. Далее, вам передается ссылка на объект в ДЛЛ, и вы попадаете, (корректнее сказать - работаете) с другим процессом. Вы и создать объект в ДЛЛ можете через вызов какой-либо ее функции вы не очень хорошо понимаете то, о чём пишете[/quote] YUBAЧто касается интерфейса ДЛЛ для работы с оборудованием, обычно драйверы нестандартного оборудования написаны очень грязно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 18:44 |
|
||
|
Избавиться от статических переменных
|
|||
|---|---|---|---|
|
#18+
Изопропилвы не очень хорошо понимаете то, о чём пишетеВозможно. Попытался в одном предложении изложить, как это м.б. сделано. ИзопропилYUBAЧто касается интерфейса ДЛЛ для работы с оборудованием, обычно драйверы нестандартного оборудования написаны очень грязно.Наверное. Мне как-то попался драйвер, который предлагалось скомпилировать. С полной инструкцией как это делать. Не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2017, 19:21 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018256]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 295ms |

| 0 / 0 |
