Мне нужно использовать Qt 4.8.7 для Embedded Linux, чтобы создать очень простой проект для тестирования. Проект включает в себя 2 формы - Диалог (состоит из QTextEdit и кнопки. Кнопка очищается. QTextEdit и QClipboard) и MainWindow (состоит из кнопки, запускающей диалог).
Редактирую текст, копирую его часть. Затем очистите редактор и буфер обмена. Я не могу вставить текст после этого, но я выгружаю память с помощью gcore и вижу текст, который я скопировал (несколько копий в форме html). Что эти объекты остались в памяти? Это временные объекты или утечки памяти? Или я что-то неправильно использую.





Если ядро, которое у вас уже есть, является ядром на основе ELF из Linux на какой-либо платформе на базе x86, и ваш процесс использует libc malloc, один из способов понять, что это за объекты (временные объекты или утечки), - использовать бесплатное программное обеспечение с открытым исходным кодом https://github.com/vmware/chap для выяснить это. После того, как вы собрали парня, вы начинаете его так:
глава core-file-name
Затем, чтобы ответить на ваш конкретный вопрос, выполните следующие команды из командной строки:
перенаправить на
показать утечку
показать привязанный
показать бесплатно
Затем поищите в каждом из трех полученных текстовых файлов шаблон, который вы видели в ядре. Если шаблон виден в выходных данных "show leaked", у вас утечка. Если это видно в выводе "show anchored", объекты, скорее всего, хранятся в каком-то контейнере, но все еще существует вероятность утечки. Если это видно в выводе "show free", это из временного выделения, которое теперь было освобождено.
В качестве альтернативы, если вы уже знаете виртуальный адрес этого шаблона и хотите увидеть, как он использовался, после того, как вы запустили chap на данном ядре, вы можете просто использовать следующую команду:
описать виртуальный адрес в шестнадцатеричном формате