Trimesh - 泄漏记忆

时间:2015-06-14 10:12:43

标签: c++ memory-leaks valgrind mesh

我使用Trimesh库来计算三角网格的每个顶点上的曲率。要做,我做:



 TriMesh *m = TriMesh::read(this->fichier);
m->need_curvatures();

float *degres= new float[nbr_vertices];

for(int i=0;i<nbr_vertices;i++)
 {
   degres[i]=m->curv1[i]; // get the curvature
 }

  delete [] degres;  m->clear(); delete m;
&#13;
&#13;
&#13;

问题是检测到泄漏记忆,即使我清除并删除&#34; * m&#34;。 泄漏记忆由&#34; valgrind&#34;检测到。

这是valgrind的输出:

&#13;
&#13;
 912 bytes in 3 blocks are possibly lost in loss record 5 of 13
==4239==    at 0x4C2CC70: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4239==    by 0x4012E54: _dl_allocate_tls (dl-tls.c:296)
==4239==    by 0x5174DA0: pthread_create@@GLIBC_2.2.5 (allocatestack.c:589)
==4239==    by 0x599C905: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0)
==4239==    by 0x4C67D2: trimesh::TriMesh::need_normals() (in /home/spin/spin)
==4239==    by 0x4B203D: trimesh::TriMesh::need_curvatures() 
&#13;
&#13;
&#13;

有什么想法解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

912 bytes in 3 blocks are 可能 lost in loss record 5 of 13

可能的丢失可能只是缓存或指针技巧,912字节几乎不是问题。除非它是几兆字节,否则我会忽略它,特别是如果它在库中而不在你的代码中。

对于这个问题,它确实应该是一个更大的范围,并且通常是一个随着更长的运行而增长的行为。如果每次调用一千字节,并且您正在进行数千或数百万次,则需要向库创建者报告

简而言之,没有真正泄漏的证据。

在循环中运行它,看看它是否在没有安定的情况下显着增长,否则你可以忽略它。