Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=39414348&tid=2018256]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 417ms |

| 0 / 0 |
