Size: a a a

2020 August 24

o

osm1um in supapro.cxx
Bohdan Bessonov
Никакого, выше ответ
Не очистить - не уб
Тп. Тп. Понял. Всё спасибо за потраченное на тушканчика время 😅
источник

CD

Constantine Drozdov in supapro.cxx
Constantine Drozdov
UB зависеть от сайдэффектов деструктора, если ты не очистил память
вроде такая формулировка стандарта
источник

CD

Constantine Drozdov in supapro.cxx
osm1um
Тп. Тп. Понял. Всё спасибо за потраченное на тушканчика время 😅
На практике ситуация эээ несколько хуже, особенно когда речь касается деструкторов в шаред либах
источник

CD

Constantine Drozdov in supapro.cxx
Но с ОС будет все в порядке
источник

CD

Constantine Drozdov in supapro.cxx
osm1um
Тп. Тп. Понял. Всё спасибо за потраченное на тушканчика время 😅
Обычно всё хорошо, если не течёт настоящий RAII
Файлы система закроет, а вот утекшая блокировка мьютекса... плохо, в общем
источник

o

osm1um in supapro.cxx
Constantine Drozdov
На практике ситуация эээ несколько хуже, особенно когда речь касается деструкторов в шаред либах
Да, да. Я просто что-то думал всё время, что в системе есть какой-то механизм по очистке динамической памяти runtime
источник

CD

Constantine Drozdov in supapro.cxx
Плюс есть ограниченные системные ресурсы, там уже можно что-то поломать
источник

CD

Constantine Drozdov in supapro.cxx
osm1um
Да, да. Я просто что-то думал всё время, что в системе есть какой-то механизм по очистке динамической памяти runtime
Она же умеет делать что угодно, например свопать)
источник

o

osm1um in supapro.cxx
Constantine Drozdov
Она же умеет делать что угодно, например свопать)
Подробнее)
источник

LA

Liber Azerate in supapro.cxx
Constantine Drozdov
Обычно всё хорошо, если не течёт настоящий RAII
Файлы система закроет, а вот утекшая блокировка мьютекса... плохо, в общем
А что с блокировкой будет?
источник

CD

Constantine Drozdov in supapro.cxx
osm1um
Подробнее)
Ну поскольку есть лишний слой трансляции, можно перемещать физическую память
источник

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
А что с блокировкой будет?
Мьютекс поломанный будет, так и скажет
источник

CD

Constantine Drozdov in supapro.cxx
И х3 что с ним потом делать
источник

Е

Егор in supapro.cxx
Constantine Drozdov
Мьютекс поломанный будет, так и скажет
винда же хендлеры закроет, остальные так не умеют?
источник

LA

Liber Azerate in supapro.cxx
Constantine Drozdov
Мьютекс поломанный будет, так и скажет
В смысле в системе? Так и останется? А это ограниченный ресурс в системе?
источник

CD

Constantine Drozdov in supapro.cxx
Егор
винда же хендлеры закроет, остальные так не умеют?
Проблема поломанного мьютекса не у ОС, а у пользователя этого мьютекса
Она звучит как "нихрена не гарантируется"
источник

CD

Constantine Drozdov in supapro.cxx
Все данные за этим мьютексом могут быть ошибочные
источник

Е

Егор in supapro.cxx
Constantine Drozdov
Проблема поломанного мьютекса не у ОС, а у пользователя этого мьютекса
Она звучит как "нихрена не гарантируется"
а, я думал речь про выход из программы и возврат памяти
источник

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
В смысле в системе? Так и останется? А это ограниченный ресурс в системе?
Есть ограниченные ресурсы в системе, правда я последний раз хрюшку ломал, не тестировал на более поздних
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
osm1um
Слушайте, а какой механизм у системы для очистки виртуальной памяти без вмешательства программы? *и какие системы так умеют *
В винде есть процесс с нулевым приоритетом, который занимается очисткой свободных страниц памяти.
Когда вызывается VirtualAlloc, то если память очищена, то она просто отдаётся процессу. Если её не успели очистить, то очистка происходит внутри VirtualAlloc. Это делается, чтобы какие-нибудь серьюрные данные не попали чужому приложению.

Т.е. если выделил новую память, для которой потребовался ViatualAlloc, то она будет обнулена (системой). Если же внутри приплюснутого кода выделил (malloc'ом), использовал, освободил, снова выделил, то может попасться уже использованная (своим же процессом) память, которая будет не обнулённой.

Как я понимаю, new обнуляет всегда.
источник