C++ Qt 4.8.7记忆人工制品

C++ Qt 4.8.7记忆人工制品,c++,qt,memory-leaks,memory-dump,qsharedpointer,C++,Qt,Memory Leaks,Memory Dump,Qsharedpointer,我需要为嵌入式Linux使用Qt4.8.7来创建一个非常简单的测试项目。 项目包括2个表单-对话框(由QTextEdit和按钮组成。按钮清除 QTextEdit和QClipboard)和主窗口(由exec对话框的按钮组成) 我编辑文本,复制它的一部分。然后清除编辑器和剪贴板。之后我不能粘贴文本, 但我使用gcore转储内存并查看复制的文本(html格式的多个副本)。 内存中还剩下哪些对象?这些是临时对象还是内存泄漏? 或者我使用了不正确的东西。如果您已经拥有的内核是基于Linux的ELF内核,在

我需要为嵌入式Linux使用Qt4.8.7来创建一个非常简单的测试项目。 项目包括2个表单-对话框(由QTextEdit和按钮组成。按钮清除 QTextEdit和QClipboard)和主窗口(由exec对话框的按钮组成)

我编辑文本,复制它的一部分。然后清除编辑器和剪贴板。之后我不能粘贴文本, 但我使用gcore转储内存并查看复制的文本(html格式的多个副本)。 内存中还剩下哪些对象?这些是临时对象还是内存泄漏?
或者我使用了不正确的东西。

如果您已经拥有的内核是基于Linux的ELF内核,在基于x86的平台上,并且您的进程使用了libc malloc,那么了解这些对象是什么(临时对象或泄漏)的一种方法就是使用免费的开源软件来解决这个问题。构建chap后,按如下方式启动:

chap核心文件名

然后,要回答您的特定问题,请从chap提示符发出以下命令:

重定向到

节目泄露

显示锚定

免费展示

然后在3个结果文本文件中查找您在核心中看到的模式。如果在“show leaked”的输出中看到该模式,则表明存在泄漏。如果在“show anchored”的输出中看到,则对象可能被保存在某个容器中,但仍有可能泄漏。如果它出现在“showfree”的输出中,那么它是从一个临时分配中释放出来的

或者,如果您已经知道该模式的虚拟地址,并且希望了解它是如何使用的,那么在给定核心上启动chap后,您可以使用以下命令:

用十六进制描述虚拟地址