Dear Boost users,
is the BGL leaky? For example the code added below produces memory leaks
(as seen from also added valgrind output).
When I comment out the line marked by /* THIS LINE DOES IT */, there are
no leaks. I am running BGL 1.29 and gcc 3.2.
Any ideas for a work-around?
cheers
Martin
#include <iostream> // for std::cout
#include <utility> // for std::pair
#include <algorithm> // for std::for_each
#include
#include
#include
using namespace boost;
int main(int,char*[])
{
// create a typedef for the Graph type
typedef adjacency_list Graph;
// Make convenient labels for the vertices
enum { A, B, C, D, E, N };
const int num_vertices = N;
// writing out the edges in the graph
typedef std::pair Edge;
Edge edge_array[] =
{ Edge(A,B), Edge(A,D), Edge(C,A), Edge(D,C),
Edge(C,E), Edge(B,D), Edge(D,E), };
int num_edges = sizeof(edge_array)/sizeof(edge_array[0]);
// declare a graph object
Graph* g = new Graph(num_vertices);
// add the edges to the graph object
for (int i = 0; i < num_edges; ++i)
add_edge(edge_array[i].first, edge_array[i].second, *g); /* THIS
LINE DOES IT */
delete g;
return 0;
}
okrslar@liebrich:~/molgen/domclust/src/test> valgrind --leak-check=yes
--show-reachable=yes ./domclust
==23473== valgrind-1.0.4, a memory error detector for x86 GNU/Linux.
==23473== Copyright (C) 2000-2002, and GNU GPL'd, by Julian Seward.
==23473== Estimated CPU clock rate is 2412 MHz
==23473== For more details, rerun with: -v
==23473==
==23473==
==23473== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==23473== malloc/free: in use at exit: 384 bytes in 1 blocks.
==23473== malloc/free: 3 allocs, 2 frees, 544 bytes allocated.
==23473== For counts of detected errors, rerun with: -v
==23473== searching for pointers to 1 not-freed blocks.
==23473== checked 6470036 bytes.
==23473==
==23473== definitely lost: 0 bytes in 0 blocks.
==23473== possibly lost: 0 bytes in 0 blocks.
==23473== still reachable: 384 bytes in 1 blocks.
==23473==
==23473== 384 bytes in 1 blocks are still reachable in loss record 1 of 1
==23473== at 0x4004A3A8: __builtin_new (vg_clientfuncs.c:125)
==23473== by 0x4004A3F6: operator new(unsigned) (vg_clientfuncs.c:138)
==23473== by 0x4035E4F1: ??? (bits/stl_alloc.h:482)
==23473== by 0x4035E40D: ??? (bits/stl_alloc.h:532)
==23473==
==23473== LEAK SUMMARY:
==23473== definitely lost: 0 bytes in 0 blocks.
==23473== possibly lost: 0 bytes in 0 blocks.
==23473== still reachable: 384 bytes in 1 blocks.
==23473==
--
-----------------------------------------------------------------------------
Martin Okrslar
MPI for Molecular Genetics phone: ++ 49 + 30 / 8413-1166
Computational Molecular Biology Fax: ++ 49 + 30 / 8413-1152
Ihnestrasse 73 email: okrslar@molgen.mpg.de
D-14195 Berlin URL: http://cmb.molgen.mpg.de
-----------------------------------------------------------------------------