powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Избавиться от статических переменных
25 сообщений из 44, страница 1 из 2
Избавиться от статических переменных
    #39414348
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Показания: Запускаем экзешник, закрываем его. Далее пытаемся удалить его - невозможно до перезапуска компа.
Статические переменные - числовые переменные и массивы, строковые массивы, ссылки на управляемые объекты.
Все массивы []delete. Объекты вроде сами должны, но на всяк случай ссылки null.
Что еще этим стат. переменным надо? Как от них избавится?, в смысле, чтобы они освободили память.

"Есть многое на свете, друг Горацио, что и не сразу в голову придет."
М. Твен "Приключения Геккельбери Финна"
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414354
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,

статические переменные - не при делах.
при завершении процесса память процесса освобождается ОС и ей глубоко насрать, что в них записано.

ExitProcess(0) - завершает приложение?
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414359
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилExitProcess(0) - завершает приложение?Нет, очищаем все и выходим из main. До введения стат переменных этого не было.
Посмотрю, что есть ExitProcess(0). В моей литературе этого нет.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414362
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, видимо это мой случайTherefore, if you do not know the state of all threads in your process, it is better to call TerminateProcess than ExitProcess .
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414366
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA, ты бред написал, статические переменные ни при чем. Процесс или завершился или нет, если завершился, то EXE можно удалить, иначе нельзя, т.к. EXE открыт, т.к. процесс не завершился.
Смотри диспетчером в процессах, похоже у тебя или процесс подвис или удаление до завершения процесса.

PS Изнутри процесса удалить его EXE невозможно.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414367
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPS Еще антивирусы могут "помогать", попробуй антивирус отключить
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414372
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TYUBA, ты бред написал, статические переменные ни при чем. Процесс или завершился или нет, если завершился, то EXE можно удалить, иначе нельзя, т.к. EXE открыт, т.к. процесс не завершился.
Смотри диспетчером в процессах, похоже у тебя или процесс подвис или удаление до завершения процесса.

PS Изнутри процесса удалить его EXE невозможно.Эт понятно. А на счет бреда, то не всегда то, что непонятно, является бредом.
Еще раз - без стат переменных, пред. версия нормально работает.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414375
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,

ОК, раз ты упорствуешь, что это не бред, то попробуй сделать простой тесткейс. Поможем проверить.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414378
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAА на счет бреда, то не всегда то, что непонятно, является бредом.
Еще раз - без стат переменных, пред. версия нормально работает.
Наверно знаешь анекдот "... Вывод: таракан без ног не слышит", у тебя тоже самое.

Есть простая истина: "Если программа выполняет мистические действия: значит ты написал что-то невероятно глупое", так оно всегда и бывает, ищи ошибку в коде.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414384
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, чушь. это нормальный и обычный процесс. Для подобных целей предусмотрена отладка. Еще не было программы и программиста, в и у которых не было бы ошибок.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414387
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBADima T, чушь. это нормальный и обычный процесс. Для подобных целей предусмотрена отладка. Еще не было программы и программиста, в и у которых не было бы ошибок.
Если у тебя все правильно, то давай простой пример кода демонстрирующий проблему. Поможем решить.

PS А лучше оставь до утра, голова свежее будет. Я прямо сейчас тоже на мистику нарвался, ищу где накосячил.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414389
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA,

так ExitProcess(0) - завершает процесс?
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414396
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил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 для них описана, и все делается. Попробую и то, и другое. Да, и почти все процессы (потоки) в управляемом коде.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414403
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAИзопропилYUBA,
так ExitProcess(0) - завершает процесс?Нет, просто из main выходим, предварительно все уничтожая.
а попробовать - пытался?
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414406
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, сегодня невозможно.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414408
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBA, чувак, посмотри в taskmanager.

Скачай себе старые добрые утилиты типа ProcessExplorer и посмотри что там к чему.
Дай скриншоты.

P.S. А то получается как в фильме - "Ничего милая, кроме ваших слез, к делу подшить нельзя..."
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414438
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAПоказания: Запускаем экзешник, закрываем его. Далее пытаемся удалить его - невозможно до перезапуска компа.
Статические переменные - числовые переменные и массивы, строковые массивы, ссылки на управляемые объекты.
Все массивы []delete. Объекты вроде сами должны, но на всяк случай ссылки null.
Что еще этим стат. переменным надо? Как от них избавится?, в смысле, чтобы они освободили память.



Всё проще.
Просто твоя программулька не завершается вообще.
Только перегрузка её процесс убивает.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414439
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAИзопропилYUBA,
так ExitProcess(0) - завершает процесс?Нет, просто из main выходим, предварительно все уничтожая.
Уже посмотрел про ExitProcess(0). Имхо, там наверное надо TerminateProcess.

Выход из main и завершение процесса -- не одно и то же.
Можно выйти из main, но процесс не завершить :-)
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414450
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBATherefore, if you do not know the state of all threads in your process, it is better to call TerminateProcess than ExitProcess .Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414487
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbYUBAпропущено...
Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран.
я ведь исключительно об отладке...
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414653
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbYUBAпропущено...
Вот нифига не better. У нас в проекте один товарищ, вместо того, чтобы разобраться, почему треды не остановились, сделал TerminateProcess в конце, в результате железо с драйверами, которые внезапно обнаруживают битую память из приложения, выдаёт синий экран.Ну это баг в драйвере. Никакие действия в программе не должны приводить к падению системы, а если такое случается - это баг не в программе, я в драйверах/ядре.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414665
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneНу это баг в драйвере. Никакие действия в программе не должны приводить к падению системы, а если такое случается - это баг не в программе, я в драйверах/ядре.Почему? Если я инициирую работу с драйвером устройства, в каком-то треде общаюсь с ним, он использует память приложения. Потом я убиваю процесс, в этот момент драйвер обращается к памяти приложения, которая уже битая. Ну, может есть какой-то нормальный способ это дело отловить со стороны драйвера, я не знаю. Но вроде, по-нормальному, я должен утилизировать нормально всё, что сам создал в своём процессе.Изопропиля ведь исключительно об отладке...ну ок :)
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414674
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbПотом я убиваю процесс, в этот момент драйвер обращается к памяти приложения
драйвер вообще-то в курсе, что приложение завершается
и не просто так неубиваемые процессы возникают
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414767
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да просто висит деструктор одного из этих глобальных объектов. Эти деструкторы вызываются после выхода из main.
Почему висит - куча возможных причин: мертвая блокировка, бесконечный цикл, ожидание ввода/вывода, ожидание завершение других потоков и еще миллион.
Отключать по одному объекту, определить в каком, и потом отладить.
...
Рейтинг: 0 / 0
Избавиться от статических переменных
    #39414800
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyОтключать по одному объекту, определить в каком, и потом отладить.

Или проще: снять ProcessExplorer-ом стэк в этот момент и сразу найти нужный по карте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Избавиться от статических переменных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]