Мне нужно использовать Qt 4.8.7 для Embedded Linux, чтобы создать очень простой проект для тестирования.
Проект включает в себя 2 формы — диалог (состоит из QTextEdit и кнопки. Кнопка очищается
QTextEdit и QClipboard) и MainWindow (состоит из кнопки, которая выполняет диалог).
Я редактирую текст, копирую его часть. Затем очистите редактор и буфер обмена. Я не могу вставить текст после этого,
но я сбрасываю память с помощью gcore и вижу текст, который я скопировал (несколько копий в виде HTML).
Что эти объекты остались в памяти? Это временные объекты или утечки памяти?
Или я использую что-то неправильно.
Если у вас уже есть ядро на базе ELF от Linux на платформе x86, и ваш процесс использовал libc malloc, один из способов понять, что это за объекты (временные объекты или утечки), — это использовать бесплатное программное обеспечение с открытым исходным кодом. https://github.com/vmware/chap чтобы понять это. После того, как вы построили Chap, вы начинаете это так:
глава -Имя-файла ядра
Затем, чтобы ответить на ваш конкретный вопрос, введите в командной строке следующие команды:
перенаправить на
шоу просочилось
шоу на якоре
показать бесплатно
Затем посмотрите в каждом из 3 полученных текстовых файлов шаблон, который вы видели в ядре. Если паттерн виден в выводе «show leaked», у вас есть утечка. Если это видно в выходных данных «show anchored», объекты, скорее всего, удерживаются в каком-либо контейнере, но все же существует вероятность, что он утек. Если это видно в выходных данных «show free», это из временного выделения, которое теперь было освобождено.
В качестве альтернативы, если вы уже знаете виртуальный адрес этого шаблона и хотите увидеть, как он использовался, после запуска главы на данном ядре вы можете просто использовать следующую команду:
описывать виртуальный адрес в шестнадцатеричном-
Других решений пока нет …