0

我尝试使用用 C++ ( https://sites.google.com/site/roboticssaurav/strokewidthnokia ) 编写的文本检测应用程序,但代码挂起。我发现这个问题的根源是其中一个函数使用了 50 K 顶点和 150 K 边的大图,并且所有代码都挂在调用邻接列表“clear”的位置。

std::vector< std::vector<Point2d> >
findLegallyConnectedComponents (IplImage * SWTImage,
                                std::vector<Ray> & rays)
{
...
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Graph;
...
Graph g(num_of_vertices);
...
}

离开此函数后,将调用 g.clear(),程序挂起。我怎样才能摆脱这个错误?谢谢。

4

2 回答 2

1

所以这个问题在release模式下就消失了,这样就解决了。

于 2013-02-19T09:46:56.213 回答
0

此问题仅在调试模式下发生。

如果你不能像我一样使用释放模式。

您可以手动清除 m_edges 然后清除图中的 m_vertices 以避免此问题。

像下面这样:

Graph g;
// .......

// clear it on DEBUG mode to avoid hanges
g.m_edges.clear();
g.m_vertices.clear();
g.clear();
于 2017-11-25T07:18:59.737 回答