![]() |
1
7
Valgrind消息
|
![]() |
2
6
仍然可以访问的内存意味着它正被全局或静态指针指向。你要做的是和Valgrind一起跑
通常情况下,它是无害的,来自这样的功能:
那个malloc仍然可以到达。但是,无论调用多少次foo,都要精确地分配一次缓冲区,这样在不释放缓冲区时就不会有任何危害。 但是考虑这样一个函数:
每次调用此函数时,都会分配另一个节点。虽然您可能只泄漏几个节点用于测试运行,但在生产运行中,您可能会泄漏到内存不足的程度。 区别的一种方法是看不同的运行是否总是泄漏相同的内存,或者泄漏更多的内存是使用较大的输入进行的测试运行。
但同样,如果你想安全,使用
|
![]() |
3
2
这些都没有泄漏,也不需要担心。内存可能是由C库分配的。如果你真的想知道他们被分配到哪里,那就去跑步吧。
|
![]() |
4
1
如果你确定你“已经释放了所有的记忆”,那么,没有什么错。对于来自其他方的组件中的内存泄漏,您不负直接责任,即使您可能经常需要解决这些问题。 Valgrind的报告没有给我们足够的信息来帮助你。 我见过很多次内存检查工具会产生误报,但我对Valgrind本身没有任何直接的经验。 |
![]() |
5
1
它能告诉你这个街区的地址吗?有时,通过查看568字节中的数据类型,您可以学到很多东西。 嗯,568字节,大约是max-path-unicode字符串的大小。 |
![]() |
6
1
将空闲的指针归零是个好主意,这将导致(错误地)尝试再次取消引用它们时发生崩溃。 |
![]() |
7
0
就我个人而言,我总是像
|
![]() |
gornvix · 如何从valgrind获得更多信息? 7 年前 |
![]() |
Ilya · 递归结构的向量存在内存问题 7 年前 |
![]() |
user7610 · 直接泄漏和间接泄漏之间有什么区别? 7 年前 |
![]() |
Danny · gcc/C++禁用vex指令的生成 7 年前 |
|
user3078625 · 如何让cg_注释包含字典? 7 年前 |
|
SonicN · realloc调用中的写入无效[已关闭] 7 年前 |