С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510

Про утечки памяти

02.07.2024, 02:34. Показов 1791. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет
вопрос про утечки памяти, как могли догадаться из названия
в некоей программе динамически выделяется память, программа экстренно завершается, выделенная динамически память не освобождается.
Но как следует по мониторингу операционной системы все занятые процессом ресурсы освобождаются.
Т.е. получается утечка памяти существует только пока процесс функционирует.
Вопрос
а можно ли сделать утечку памяти, которая бы существовала и после завершения процесса?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2024, 02:34
Ответы с готовыми решениями:

Про утечки памяти
Здравствуйте. Может кто-нибудь посоветовать статьи на тему борьбы с утечками памяти? Дело в том, что недавно начал писать на C++ с...

Утечки памяти без выделения памяти?
Человек использует _CrtDumpMemoryLeaks() для отлова утечек, и обратился ко мне в сязи с тем, что есть утечка, но памяти он никому не...

Утечки памяти
Здравствуйте, уважаемые господа. Недавно заметил через диспетчер задач, что в моей программе присутствуют утечки памяти. Кол-во...

20
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
02.07.2024, 02:46
pup_kin, Зависит от ОС. В досе такое упороть было без проблем потому что дескрипторы были доступны для доступа из проги. Под виндой сама софтина туда доступа не имеет только деспетчер памяти. В некоторых других осях где есть общие области для хранения данных без потери при перезапуске процесса тоже скорее всего возможно. А вам зачем? Вы там часом не вирусописательством поразвлечься решили? В досе такую шнягу специально деладли только для базовой стелс-защиты вируса.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
02.07.2024, 04:53
Цитата Сообщение от pup_kin Посмотреть сообщение
Т.е. получается утечка памяти существует только пока процесс функционирует.
Для какой ОС?

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

Цитата Сообщение от pup_kin Посмотреть сообщение
а можно ли сделать утечку памяти, которая бы существовала и после завершения процесса?
Через системные API запрашивать у ОС особые виды памяти, которые не привязаны к процессу. Однако процессу с обычными привилегиями такое, как правило, недоступно.
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38164 / 21099 / 4306
Регистрация: 12.02.2012
Сообщений: 34,687
Записей в блоге: 14
02.07.2024, 06:39
Цитата Сообщение от pup_kin Посмотреть сообщение
а можно ли сделать утечку памяти, которая бы существовала и после завершения процесса?
- странный вопрос... Опять-таки - зачем? Ответ: да, можно. Создавай объекты ядра и не освобождай. К примеру, создавай кисти и не освобождай. Или открывай файлы и не закрывай.
2
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
02.07.2024, 13:07  [ТС]
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вы там часом не вирусописательством поразвлечься решили?
просто иногда, в частности в 1С.
Есть утечка памяти например в rphostИ рпхост перезапускается регламентно,
запускается другой экземпляр процесса и ему передается все что было внутри памяти первого,
т.е. не происходит чтение из файлов с диска, а просто процесс 1 переписывает все свое имущество процессу 2
rphost1 в rphost2
и после этого rphost1 завершается как накопивший ошибок и утечек и еще чего-то.
и вот интересно утечки копироваться не будут, потому что на них не осталось ссылок,
но вопрос почему свободная память постепенно кончается на ОС - виртуальная память растет.

ну собственно по этой теме и понятно что такое возможно - например открыть файлов и не закрыть.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
02.07.2024, 13:11
Цитата Сообщение от pup_kin Посмотреть сообщение
все что было внутри памяти первого,
Очевидно, не память переписывается буквально, иначе все утечки бы тоже переезжали.
Переносится информация об известных на этот момент объектах. Можно и через диск, тоже самое (с учетом кэширования)
0
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
02.07.2024, 13:38
Цитата Сообщение от pup_kin Посмотреть сообщение
Но как следует по мониторингу операционной системы
А что такое "все занятые процессом ресурсы"? Подозрительно легко. Похоже на ресурсы, занятые в оперативной памяти. А утечка - это занятая процессом динамическая память (диск). Впрочем, сделай опыт: создай указатель, например int* pN, запомни значение, закруглись, а потом в другом запуске присвой новому указателю это значение. Может, получишь то же число. Сообщи коллективу. Очень интересно.
0
 Аватар для andrey_f
883 / 536 / 228
Регистрация: 21.02.2011
Сообщений: 5,706
02.07.2024, 14:07
Цитата Сообщение от commun Посмотреть сообщение
Сообщи коллективу. Очень интересно.
интересно будет узнать результат :P
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
02.07.2024, 15:31  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Можно и через диск, тоже самое (с учетом кэширования)
почему диск?

Добавлено через 49 секунд
Цитата Сообщение от commun Посмотреть сообщение
А что такое "все занятые процессом ресурсы"? Подозрительно легко. Похоже на ресурсы, занятые в оперативной памяти. А утечка - это занятая процессом динамическая память (диск). Впрочем, сделай опыт: создай указатель, например int* pN, запомни значение, закруглись, а потом в другом запуске присвой новому указателю это значение. Может, получишь то же число. Сообщи коллективу. Очень интересно.
почему динамическая память - это диск?
0
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
02.07.2024, 15:45
Цитата Сообщение от pup_kin Посмотреть сообщение
почему динамическая память - это диск?
А что еще? Все равно проверить нужно.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
02.07.2024, 15:49
Цитата Сообщение от pup_kin Посмотреть сообщение
почему диск?
Не понял вопроса.
Почему не шар, такой вопрос?

Я имел ввиду "через файл(ы)".
0
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
02.07.2024, 16:41
pup_kin, пока не нужно опытов (без подробностей).
0
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
02.07.2024, 18:40  [ТС]
Цитата Сообщение от andreyfreelans Посмотреть сообщение
Сообщи коллективу. Очень интересно.
Цитата Сообщение от KSergey9 Посмотреть сообщение
Очевидно, не память переписывается буквально, иначе все утечки бы тоже переезжали.
меня интересует вот какой вопрос

например есть у нас некий процесс
в нем некая переменная
она расположена в памяти по адресу1.
запускается другой процесс и в него передается адрес этой переменной
и присваивается некоему указателю.
само значение переменной не копируется.
процесс 1 завершается,
и процесс 2 ссылается на память которая была не его ?
вопрос: он же не сможет обращаться к той переменной которая была создана в первом процессе по адресу который ему известен, будет ошибка доступа или вовсе памят переиспользуется.
Тогда значит получается, что надо скопировать значение переменной из процесса 1 в процесс 2.

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

или оно просто начинает копирование и то что скопировало сразу уничтожает?
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
02.07.2024, 18:55
Цитата Сообщение от pup_kin Посмотреть сообщение
например есть у нас некий процесс
в нем некая переменная
она расположена в памяти по адресу1.
запускается другой процесс и в него передается адрес этой переменной
В системе с виртуальной памятью такого просто не может быть, если эта переменная заранее не была размещена в специальной разделяемой памяти.
0
Заблокирован
02.07.2024, 19:48
Цитата Сообщение от ablex Посмотреть сообщение
В системе с виртуальной памятью такого просто не может быть, если эта переменная заранее не была размещена в специальной разделяемой памяти.
CheatEngine, ArtMoney ?
0
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
02.07.2024, 19:54
Цитата Сообщение от pup_kin Посмотреть сообщение
процесс 2 ссылается на память которая была не его
Во втором процессе имеешь доступ к памяти через указатель второго процесса. На одну и ту же область памяти можешь создать несколько указателей, но через операцию delete Указатель прогоняешь один из них. Но все изложенное Авторы не советуют.
0
Заблокирован
02.07.2024, 19:58
Цитата Сообщение от commun Посмотреть сообщение
но через операцию delete Указатель прогоняешь один из них
Через delete (cstd менеджер памяти) такого не получится.
Каждый "менеджер" управляет памятью своего процесса.
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
02.07.2024, 19:59
Цитата Сообщение от SmallEvil Посмотреть сообщение
CheatEngine, ArtMoney ?
Они процесс хукают, то есть внедряют туда свой код, который передает инфу в GUI этих программ. Работа с адресами идет на стороне хука тоесть в одном процессе.
Так что да, не может быть.
Представь себе два листа бумаги в клетку, на одном написано "процесс А", а на другом "процесс Б". На одном листе бумаги ты отметил 18 сверху и 6 слева клетку и написал там число "один". Потом ты берешь второй лист и отмечаешь там (передаешь адрес), этой же клетки. Что ты увидишь в ней? Правильно ни-хре-на. Потому что это другая клетка, другая память. Хоть и адрес численно тот же.
0
02.07.2024, 19:59

Не по теме:

Цитата Сообщение от SmallEvil Посмотреть сообщение
CheatEngine, ArtMoney ?
Они не работают с памятью чужого процесса "напрямую через указатель", а делают это через специальные системные вызовы (readprocessmemory/writeprocessmemory, ptrace). Так же как и отладчики. Для прямой работы нужна разделяемая память (когда разное виртуальное адресное пространство отображается в одно физическое).

0
02.07.2024, 20:12

Не по теме:

Цитата Сообщение от zayats80888 Посмотреть сообщение
Они не работают с памятью чужого процесса "напрямую через указатель",
Я это знаю, пусть будет для ТС.

Цитата Сообщение от zayats80888 Посмотреть сообщение
Для прямой работы нужна разделяемая память (когда разное виртуальное адресное пространство отображается в одно физическое).
Это ещё откуда взялось ? )
Не припомню такого для вышеуказанных программ.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2024, 20:12
Помогаю со студенческими работами здесь

Утечки памяти и STL
Имеется код: #include <map> #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> using namespace...

Поиск утечки памяти
Здравствуйте! Не могли бы вы помочь мне найти утечку памяти в программе? Весь день искал, все вроде бы удаляется, но 4 мб все равно...

Я создаю утечки памяти !
Нет, я не хочу похвастаться этим. Я любитель использовать быстрые решение для того чтобы реализовать алгоритм или проверить "чтобы...

Не будет ли утечки памяти?
Привет. Мне нужно очистить строку (массив символов) char str; делаю так str = '\0'; не будет ли это утечкой? P. S. думаю нет,...

Определение утечки памяти
Здравствуйте! Имеется такая ситуации: к проекту подключается lib файл и создается класс наследуемый класс определенный в либе. Подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru