|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||
Память освобождается, но значение остается03.03.2016, 20:53. Показов 4069. Ответов 78
Метки нет (Все метки)
Почему в следующем коде, программа завершается принудительно, но в консоли все равно видно значение переменной, память которой была удалена?
Откуда берется это значение?
0
|
||||||
| 03.03.2016, 20:53 | |
|
Ответы с готовыми решениями:
78
Не освобождается память Освобождается ли память? Память освобождается не полностью |
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 03.03.2016, 22:11 [ТС] | |||
|
TheCalligrapher, Это я понимаю, но мне интересно, кто и по каким критериям выбирает что именно этот участок(прежде занятый), должен быть занят новыми данными?
0
|
|||
|
93 / 6 / 5
Регистрация: 25.02.2016
Сообщений: 30
|
||||||
| 03.03.2016, 22:11 | ||||||
0
|
||||||
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||
| 03.03.2016, 22:13 | ||
|
Но вы можете, например, попробовать сразу выделить еще один 'int' и посмотреть, ляжет ли он на место предыдущего освобожденного 'int' или куда-то еще. Пробовали? Лег?
1
|
||
|
93 / 6 / 5
Регистрация: 25.02.2016
Сообщений: 30
|
|
| 03.03.2016, 22:14 | |
|
0
|
|
|
93 / 6 / 5
Регистрация: 25.02.2016
Сообщений: 30
|
||
| 03.03.2016, 22:17 | ||
|
0
|
||
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||||||||
| 03.03.2016, 22:20 | ||||||||
Но в любом случае это все - непредсказуемые детали реализации. Может лечь, может не лечь... Какая вам-то разница?
0
|
||||||||
|
BrainOverflow
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
|
|
| 03.03.2016, 22:32 | |
|
Мне кажется эта тема потеряла смысл на 2 посте.
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||
| 03.03.2016, 22:33 [ТС] | |||||||
|
BlackMare,
Почему можно не писать delete? Думаю нужно, память выделенная в getIntegerFromHeap же не освободилась. Оно ведь в куче хранится, а не в стеке. castaway, Снова не понятно. Вы говорите, что значение остается и его нельзя удалить, а лишь затереть другим. Как? Значит в таком случае есть/будет утечка, ибо для хранения значения требуется же память? Возможно я чего то не понимаю, но из ваших сделал такой вывод... Ниже предоставил тесты
0
|
|||||||
|
Неэпический
|
||
| 03.03.2016, 22:36 | ||
|
потом храбро охранял его три дня. А потом ушел. Надпись исчезла из-за этого? Уверен, что этот забор кто-то другой не украсит теперь?
1
|
||
|
93 / 6 / 5
Регистрация: 25.02.2016
Сообщений: 30
|
||
| 03.03.2016, 22:38 | ||
|
потока память все равно будет возвращена ОС.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 03.03.2016, 22:39 | |||||||
|
Нужно смотреть не адрес указателя, а адрес в указателе:
1
|
|||||||
|
93 / 6 / 5
Регистрация: 25.02.2016
Сообщений: 30
|
|
| 03.03.2016, 22:43 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 03.03.2016, 22:46 [ТС] | ||
|
Croessmah,
Не уверен, но хочу понять уверен ли компилятор и почему а так же что гласят стандарты на эту тему DrOffset, Все равно разные значения(адреса)
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 03.03.2016, 22:52 | |||
|
Вот тест в онлайн компиляторе vc++: http://rextester.com/POA50454 , адреса разные. Вот тест в онлайн компиляторе clang: http://rextester.com/JHACV81511 , адреса одинаковые. Разная реализация менеджера памяти, разные результаты. Однако вышесказанного это не отменяет, delete помечает память свободной (менеджер памяти теперь может отдать ее по другому запросу), а не физически что-то там удаляет ![]() Если память вернули менеджеру памяти (пометили свободной), то утечки нет.
0
|
|||
|
|
|||
| 03.03.2016, 22:55 | |||
|
0
|
|||
|
Вездепух
13239 / 6871 / 1827
Регистрация: 18.10.2014
Сообщений: 17,417
|
||
| 03.03.2016, 22:58 | ||
|
Когда вы в самый первый раз запросили память для вашего 'int', библиотека времени выполнения запросила некий большой блок памяти у ОС (возможно, он был запрошен заранее) и затем внутри этого большого блока библиотека времени выполнения своими средствами выделила малюсенький "блочек" для вашего одинокого 'int'. Когда вы сделали 'delete' для вашего 'int', библиотека времени выполнения записала в своих внутренних структурах, что это место внутри большого блока теперь свободно. Однако возвращать большой блок обратно в ОС она не стала. Этот большой блок будет использоваться для дальнейших выделений памяти и возвращать его ОС (чтобы потом обратно запрашивать) нет смысла - это слишком "тяжелая" операция. Поэтому с точки зрения ОС этот большой блок остается выделенным. И данные в нем ОС продолжает тупо честно хранить. Библиотека же времени выполнения знает, что место, занимавшееся вашим 'int' в большом блоке свободно и, рано или поздно, библиотека времени выполнения использует его для хранения чего-то другого. Пока библиотека времени выполнения помнит, что есть такое место, оставленное после себя вашим освобожденным 'int', никакой утечки разумеется нет.
0
|
||
| 03.03.2016, 22:58 | |
|
Не освобождается память при выбросе исключений Правильно ли в данной программе освобождается память?
Освобождается ли память выделенная под массив после вызова деструктора класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|