Skip to content

Commit edd6051

Browse files
jhlegarretadzenanz
authored andcommitted
BUG: Fix dynamically allocated memory management
Fix dynamically allocated memory management: create the object on the stack instead of creating a raw pointer and rely on its automatic memory management ability for the allocation/release. Fixes: ``` ==20951== 8 bytes in 1 blocks are indirectly lost in loss record 1 of 8 ==20951== at 0x483BE63: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==20951== by 0x17BB03: __gnu_cxx::new_allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*>::allocate(unsigned long, void const*) (new_allocator.h:114) ==20951== by 0x17B068: std::allocator_traits >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*> >::allocate(std::allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*>&, unsigned long) (alloc_traits.h:443) ==20951== by 0x17A0C7: std::_Vector_base >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*, std::allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*> >::_M_allocate(unsigned long) (stl_vector.h:343) ==20951== by 0x17797C: void std::vector >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*, std::allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*> >::_M_realloc_insert >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >* const&>(__gnu_cxx::__normal_iterator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >**, std::vector >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*, std::allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*> > >, itk::QuadEdgeMeshLineCell >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >* const&) (vector.tcc:440) ==20951== by 0x175633: std::vector >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*, std::allocator >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >*> >::push_back(itk::QuadEdgeMeshLineCell >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >* const&) (stl_vector.h:1195) ==20951== by 0x174461: itk::QuadEdgeMeshPolygonCell >, itk::MapContainer > >, std::set, std::allocator >, itk::GeometricalQuadEdge > > >::QuadEdgeMeshPolygonCell(unsigned long) (itkQuadEdgeMeshPolygonCell.hxx:34) ==20951== by 0x173459: itkQuadEdgeMeshPolygonCellTest(int, char**) (itkQuadEdgeMeshPolygonCellTest.cxx:92) ==20951== by 0x136017: main (ITKQuadEdgeMeshTestDriver.cxx:277) ``` Raised, for example, in: https://open.cdash.org/viewDynamicAnalysisFile.php?id=10662948
1 parent 3335e69 commit edd6051

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Modules/Core/QuadEdgeMesh/test/itkQuadEdgeMeshPolygonCellTest.cxx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,15 @@ itkQuadEdgeMeshPolygonCellTest(int, char *[])
8989

9090

9191
// Test point container iterators
92-
auto * quadEdgeMeshPolygonCell = new PolygonCellType();
92+
PolygonCellType quadEdgeMeshPolygonCell{};
9393

94-
PolygonCellType::PointIdIterator pointId = quadEdgeMeshPolygonCell->PointIdsBegin();
95-
PolygonCellType::PointIdIterator endId = quadEdgeMeshPolygonCell->PointIdsEnd();
94+
PolygonCellType::PointIdIterator pointId = quadEdgeMeshPolygonCell.PointIdsBegin();
95+
PolygonCellType::PointIdIterator endId = quadEdgeMeshPolygonCell.PointIdsEnd();
9696
ITK_TEST_EXPECT_TRUE(pointId);
9797
ITK_TEST_EXPECT_TRUE(endId);
9898

99-
PolygonCellType::PointIdConstIterator constPointId = quadEdgeMeshPolygonCell->PointIdsBegin();
100-
PolygonCellType::PointIdConstIterator constEndId = quadEdgeMeshPolygonCell->PointIdsEnd();
99+
PolygonCellType::PointIdConstIterator constPointId = quadEdgeMeshPolygonCell.PointIdsBegin();
100+
PolygonCellType::PointIdConstIterator constEndId = quadEdgeMeshPolygonCell.PointIdsEnd();
101101
ITK_TEST_EXPECT_TRUE(pointId);
102102
ITK_TEST_EXPECT_TRUE(endId);
103103

0 commit comments

Comments
 (0)