哪里是分配,什么是负分配
umdh: where are the deallocations, and what is a negative allocation?
关于umdh我有两个基本问题:
-
如果它所做的只是报告分配,而不是释放,它怎么能帮助我找到泄漏?在困难的结果中,我得到了很多新的分配,但是没有报告哪些被释放了,哪些没有(从而导致泄漏)。
-
diff报告按分配大小递减排序。在报告的底部有一些分配是负数,分配的数量为0。这是什么意思?
-
UMDH(或者实际上:由于GFlag设置的Windows)将在为对象分配内存时存储调用堆栈。如果释放了内存,调用栈也会丢失。但这没关系,因为它被释放了,在这种情况下没有泄漏。
因此,剩余的项(您看到的所有内容)都是(潜在地)导致泄漏的分配。对于所有这些分配,你知道对象是在哪里创建的(从调用堆栈),你的任务是找出应该在哪里释放它(例如通过代码审查)。
-
我不太确定这一点,但考虑一个在您拍摄第一个UMDH快照之前存在的长寿对象。如果稍后释放它,它将显示为负内存。在这种情况下,您可能没有调用堆栈(如第1节所述),它只是一个信息。
它可能表明您应该更早地开始制作UMDH快照,但如果大小与您正在寻找的对象不匹配,通常也可以忽略这些快照。
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- unique_ptr:在分配之前调用 reset 有什么效果
- 将指针分配给另一个指针时会发生什么情况?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 为对象分配整数.输出将是什么?
- 重新分配向量时,向量中的内存会发生什么情况
- C++程序什么都不做,但瓦尔格林德显示内存分配
- C++指针中的这两种类型的值分配有什么区别?
- 删除类成员的动态分配内存的最佳方法是什么
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 虚函数如何工作,分配后新的返回类型会发生什么?
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- 如果链表被重新分配,会发生什么
- 堆指针不会被分配给数组有什么原因吗
- 如果您为类的一个对象动态分配内存作为参数,会发生什么
- 右值需要分配什么向后兼容性
- scanf() 语句中"%*[^n]"的格式字符串指示什么?分配抑制器 (*) 和否定扫描集 ([^) 如何协同工作?
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 这个演员分配什么?C风格铸造
- 视觉 建议在C++中执行字符串分配什么?