小编use*_*833的帖子

valgrind条件跳转或移动取决于未初始化的值,这是否表示内存泄漏?

我在代码中遇到内存泄漏问题,当它运行时,堆继续增加到最大值,我需要重新启动服务,我运行top命令,看到堆正在增加,只要我在服务中调用一个场景.

我用valgrind运行服务,

valgrind  --log-file=log-feb19.txt --leak-check=full --show-reachable=yes --track-origins=yes myservice
Run Code Online (Sandbox Code Playgroud)

当我运行场景时,我没有看到任何明显丢失或可能丢失的块,但我看到很多条件跳转或移动取决于未初始化的值(s)错误.

这些是否会导致内存泄漏?

我得到的例子:

==27278== Conditional jump or move depends on uninitialised value(s)

==27278==    at 0xC90D91E: xcsFreeMemFn (in /apps/opt/mqm/lib64/libmqmcs_r.so)
Run Code Online (Sandbox Code Playgroud)

........

==27278==  Uninitialised value was created by a heap allocation

==27278==    at 0x4A078B8: malloc (vg_replace_malloc.c:270)

==27278==    by 0xC90E32F: xcsGetMemFn (in /apps/opt/mqm/lib64/libmqmcs_r.so)
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗

c c++ valgrind

7
推荐指数
2
解决办法
3万
查看次数

在gdb for linux中启用memleak选项

我试图查看导致内存泄漏的进程,并转储导致它看到问题的堆.

我在gdb中使用哪个命令来设置内存泄漏并检查堆?

我试过了:

(gdb) check -leaks

checkpoint: can't find fork function in inferior.

(gdb) help info heap

Undefined info command: "heap".  Try "help info".

(gdb) help info leaks 

Undefined info command: "leaks".  Try "help info".
Run Code Online (Sandbox Code Playgroud)

c++ linux gdb memory-leaks

4
推荐指数
1
解决办法
2万
查看次数

删除主类的对象指针是否也删除了嵌套类指针?

我在类,嵌套类中有一个类

class A {
 public:
 int a;
 int b;
  class B {
    int c;
    int d;
  }
}
Run Code Online (Sandbox Code Playgroud)

在这个过程中,我在堆中分配了B类的对象指针.

   B *bobj = new B();
   A *a;
   auto_ptr<A> A1(new A());
   a = A1.release();
Run Code Online (Sandbox Code Playgroud)

删除a,删除bobj也是?

delete a;
Run Code Online (Sandbox Code Playgroud)

还是我们应该明确删除子类指针?

这是在我不写的代码中,我把日志放在所有的alloc和deallocs上,我看到B *bobj = new B(),为此没有删除,对于A的对象ptr,有一个删除.然而,没有内存泄漏.这就是为什么我怀疑在这种情况下会发生什么.

c++ class subclass

3
推荐指数
1
解决办法
1781
查看次数

标签 统计

c++ ×3

c ×1

class ×1

gdb ×1

linux ×1

memory-leaks ×1

subclass ×1

valgrind ×1