Boost logo

Boost Users :

Subject: Re: [Boost-users] [BGL] Free graph - double free or corruption
From: Jeremiah Willcock (jewillco_at_[hidden])
Date: 2010-01-03 20:39:05


On Mon, 4 Jan 2010, Matthieu BOUSSARD wrote:

> Hello,
>
> I'm using BGL to construct an exploration graph. At each decision step I have
> to create a new graph. It seems that I'm not freeing correctly the memory,
> causing a memory leak. The name of a node in the graph is a pointer to a
> structure,
>
> typedef adjacency_list <listS,vecS, directedS,
> property<vertex_name_t, state_t *, property<vertex_prop_t,s_prop> >,
> property<edge_weight_t, float,
> property<edge_name_t,int> >
> >Graph;
>
> I also use a map to find the vertex according to a given state
> typedef std::tr1::unordered_map<state_t *, vertex_t> state_vertex_map_t;
>
> In the destructor of my planner object, every time I try to free anything
> (from the map or from the vertices of the graph) I'v got an "double free or
> corruption" error. Could you help me to find the way to free all the memory ?
> Thank you.

Does your planner object contain the graph? When exactly is the property
data destroyed relative to the graph itself? You might be better off
using boost::shared_ptr<state_t> as your property type; copies (and
explicit deallocation) will no longer be a problem in that case.

-- Jeremiah Willcock


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net