|
1 / 1 / 0
Регистрация: 31.03.2019
Сообщений: 144
|
|
Каким образом отслеживать утечку памяти?07.07.2019, 17:59. Показов 6356. Ответов 35
Метки нет (Все метки)
Например, где-то забыл освободить динамическую память, или неправильно написал delete.
Хоть программа и работает без ошибок, но "забытую" динамическую память нужно отслеживать. Посоветуйте технологию. Спасибо.
0
|
|
| 07.07.2019, 17:59 | |
|
Ответы с готовыми решениями:
35
Выделение памяти, проверка на утечку памяти Проверка на утечку памяти Найти утечку памяти программно |
|
из племени тумба-юбма
|
|
| 25.02.2021, 18:03 | |
|
GbaLog-, DrOffset, чем чревата утечка понятно, спасибо.
Еще один вопрос: вот мы вызываем функцию, или подключаем файл в котором используется динамическая память, и в данной функции(файле) происходит утечка. Память освободится только после завершения главной программы, или после завершения работы функции(файла)?
0
|
|
|
"C with Classes"
|
||
| 25.02.2021, 18:09 | ||
|
0
|
||
|
фрилансер
6484 / 5710 / 1132
Регистрация: 11.10.2019
Сообщений: 15,222
|
|
| 25.02.2021, 19:34 | |
|
мама Стифлера, "утёкшую" память можно освободить только завершением или прибиванием процесса
0
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
|
| 25.02.2021, 19:45 | |
|
вот, например, посмотрела на habr
проставила в U++ build_method для gcc-9.3, win32 -fsanitize=address в:compiler - common options common link options debug link options (в последний ещё -g -v) получила такую строку:
(): Configured with: ../gcc-9.3.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-s
ystem-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj- c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry - -disable-nls --disable-werror --disable-symvers --enable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 -- with-pkgversion='Rev2, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2 и такое: (): Linking has failed (): c++.exe: fatal error: cannot read spec file 'libsanitizer.spec': No such file or directory (): compilation terminated. не могу понять, что надо доставить в msys2 ?? Добавлено через 2 минуты p.s. также пробовала советы по #include <mcheck.h> - но жалуется, что у нео нет такого файла... может тоже через msys2 можно установить?Кликните здесь для просмотра всего текста
You need to insert mtrace hooks into your program. #include <mcheck.h> Then call mtrace(); Before you start allocating any memory. Also compile with -g if using g++.
0
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,467
|
|
| 25.02.2021, 19:55 | |
|
Вот вам мой хакерский способ
![]() (только тсс, никому не говорите ) - запускаем программу и диспетчер задач. Смотрим на выделение памяти. Проблемный кусок можно, если позволяет архитектура проги естественно, обернуть в бесконечный цикл. Точность конечно никакущая, но всё таки она есть. А уж если диспетчер показывает взрывной рост потребления памяти - значит у кого-то будет много работы в ближайшее время ![]() .
2
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
|
| 25.02.2021, 20:03 | |
|
у меня по серьёзным вопросам очень плохое чувство юмора... (особенно когда приходится вычитывать то, что под спойлером)
![]() 3.12 Program Instrumentation Options тоже посмотрела... p.s. вроде в msys2 брала и clang Кликните здесь для просмотра всего текста
(): "D:\\msys32\\mingw32\\bin\\ld" -m i386pe -Bstatic -o "D:\\TODO\\upp 13664\\upp\\out\\MyApps\\clang.Debug.Deb ug_Full.Usemalloc\\myLeak2.exe" "D:\\msys32\\mingw32\\i686-w64-ming
w32\\lib\\crt2.o" "D:\\msys32\\mingw32\\lib\\gcc\\i686-w64-mingw32\\9.3.0\\crtbegin.o" "-LD:\\msys32\\clang32\\lib" "-LD:\\msys32\\mingw32\\lib" "-LD:\\msys32\\mingw32\\i686-w64-min gw32\\lib" "-LD:\\msys32\\mingw32\\lib\\gcc\\i686-w64-mingw32\\9.3.0" "-LD:\\msys32\\mingw32\\i686-w64-mingw32\\lib" "-LD:\\msys32\\mingw32\\lib" "-LD:\\msys32\\mingw32\\i686-w6 4-mingw32/sys-root/mingw/lib" "D:/TODO/upp 13664/upp/out/MyApps/myLeak2/clang.Debug.Debug_Full.Main.Usemalloc\\m yLeak.o" --start-group --end-group -lstdc++ --start-group -lming w32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lpthread "D:\\msys32\\mingw32\\lib\\clang\\10.0.0 \\lib\\windows\\libclang_rt.asan_dynamic-i386.dll.a" "D:\\msys32\\mingw32\\lib\\clang\\ 10.0.0\\lib\\windows\\libclang_rt.asan_d ynamic_runtime_thunk-i386.a" --require-defined ___asan_seh_interceptor --whole-archive "D:\\msys32\\mingw32\\lib\\clang\\10.0.0 \\lib\\windows\\libcl ang_rt.asan_dynamic_runtime_thunk-i386.a" --no-whole-archive -ladvapi32 -lshell32 -luser32 -lkernel32 --end-group "D:\\msys32\\mingw32\\lib\\gcc\\i686-w64-mingw32\\9.3.0\\crtend.o" ошибки (): D:\msys32\mingw32\bin\ld: эхтючьюцэю эрщЄш D:\msys32\mingw32\lib\clang\10.0.0\lib\w indows\libclang_rt.asan_dynamic-i386.dll.a: No such file or directory (): D:\msys32\mingw32\bin\ld: эхтючьюцэю эрщЄш D:\msys32\mingw32\lib\clang\10.0.0\lib\w indows\libclang_rt.asan_dynamic_runtime_ thunk-i386.a: No such file or directory (): D:\msys32\mingw32\bin\ld: эхтючьюцэю эрщЄш D:\msys32\mingw32\lib\clang\10.0.0\lib\w indows\libclang_rt.asan_dynamic_runtime_ thunk-i386.a: No such file or directory
0
|
|
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,467
|
|||
| 25.02.2021, 20:16 | |||
|
0
|
|||
|
Любитель чаепитий
|
||
| 25.02.2021, 20:23 | ||
|
https://github.com/msys2/MINGW... ssues/3163
1
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
||||
| 25.02.2021, 20:25 | ||||
![]() Добавлено через 57 секунд ... потому что интересует именно отладка в windows (не linux)... переезжать пока тоже не хочу
0
|
||||
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,467
|
||
| 25.02.2021, 20:39 | ||
|
Добавлено через 3 минуты а вот "плюшками" самого креатора можно воспользоваться. Добавлено через 17 секунд а вот "плюшками" самого креатора можно воспользоваться.
0
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
|||
| 25.02.2021, 21:00 | |||
|
но тоже ещё не переехала на него... время... и нравится U++ - в рамках upp namespace пока реализовывает всё, что надо Добавлено через 13 минут
0
|
|||
|
Любитель чаепитий
|
||
| 25.02.2021, 21:25 | ||
|
правда один человек там отписал, что если собрать LLVM из гита, то санитайзеры заработают. https://github.com/msys2/MINGW... -477077968 но сам не пробовал.
1
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
|
| 28.02.2021, 20:15 | |
|
How to find memory leaks in Qt?
да, и кстати... вкладка Tools есть, Window есть, а Deleakek нееет в моём Qt Creator 4.5, который ставила с qt_512_mingw_32bit ... может, действительно, зарегистрироваться надо было на Qt, чтобы полный функционал появился?.. вобщем не знаю... вообще, на установку с оф.сайта жалуются люди (часто не догружается, обрывается связь и т.д. по сто раз пытаются установить с оф.сайта) - поэтому с оф. даже не пробую...p.s. вобщем буду всё стараться писать в RAII... может, глазками надёжнее утечки памяти искать
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 28.02.2021, 20:50 | ||
|
https://www.deleaker.com/docs/... ation.html
1
|
||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
||||
| 01.03.2021, 20:17 | ||||
What Every Computer Programmer Should Know About Windows API, CRT, and the Standard C++ Library значит, видимо, "own heap in U++" как раз и имеется в виду - что условно в кавычках "свой CRT"... и так как свои new/delete (идущие из malloc/free) - вот в STD и не отлавливаются memory leaks в U++... CRT, встроенная в MSVC, - "вытянута на поверхность" условно говоря - т.е. разработан stuff для мониторинга аллокаций/деаллокаций... а в Qt - есть спец. Extension(s) для ловли утечек (платная)... или пользоваться CRT от MSVC и его Heap Debugger... и всё это дополняется др. возможностями GNU и CLang - при переходе на Linux... да и Linux'ный Valgrind в помощь при ловле утечек... - думаю, как раз многопоточная природа Linux'a и даёт ему лёгкость в наблюдении за любым рабочим процессом, находящемся в др. потоке/процессе по отношению к процессу, отлавливающему утечки... имхо... а большинство программ Windows обычно однопоточны - поэтому, вероятно, на нём сложнее наблюдать за сторонним процессом (он, в принципе, не заточен на нужную многопоточность)... p.s. хоть в Win10 с v.2004 и анонсируют Ubuntu... но что-то мне кажется, что если пробовать открывать Ubuntu, в ней Valgrind и какой-нибудь работающий тестируеиый App - то кушать оперативки всё это добро будет побольше, чем просто использовать установленный MSVC с его CRT LIBS... - не тестила - в рамках догадок... имхо Добавлено через 5 минут P.P.S. CRT library type - сразу становятся понятны нюансы создания any_Libary
p.p.p.s ну и, как всегда, лучше перестраховаться, чем потом лечить...
0
|
||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
||
| 08.03.2021, 19:47 | ||
Upp -> New_project - > Console_application(no U++)-> и начинаем ловить... cppMemDbg – Easy to use C++ memory leak detection library ... OK... == вообще, метод переопределения new/delete считается самым рабочим для ловли утечек... p.s. на досуге попробую ещё Memory Leak Detector for C++ Добавлено через 8 минут p.p.s. по статье с habr - crtdbg.h не включился из msys2-mingw... вероятно, потому что написан для C-run-time от MSVC... ?
0
|
||
| 08.03.2021, 19:47 | |
|
Помогаю со студенческими работами здесь
36
Программа для проверки кода на утечку памяти. Как можно специально организовать утечку памяти? Удаление из вектора указателей и предотвратить утечку памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|