我有一个递归函数,它返回一个结构列表。
struct Neighbour_node{
int index;
double dist;
};下面是函数:
list<Neighbour_node> findNewNeighbours(int original, int particle, int k){
Neighbour_node node;
list<Neighbour_node> neighbours;
list<Neighbour_node> temp_neighbours;
list<Neighbour_node>::iterator iterator;
if (k <= 0){
if (particle == -1){
node.index = -1;
node.dist = 1000.0;
}
else{
node.index = particle;
node.dist = glm::length(hair[original].position - hair[particle].position);
neighbours.push_back(node);
}
}
else {
for (unsigned int i = 0; i < hair[particle].neighbours.size(); i++){
temp_neighbours = findNewNeighbours(original,hair[particle].neighbours[i],k - 1);
temp_neighbours.sort(compareNeighbour_node);
neighbours.merge(temp_neighbours,compareNeighbour_node);
}
}
return neighbours;
}行:
temp_neighbours = findNewNeighbours(original,hair[particle].neighbours[i],k - 1);导致分段错误,我不确定原因。我已经看过和我错误的例子类似的例子,看起来没有错。但这些函数不是递归的,所以我猜这就是问题所在-此外,当k=0(一个函数只调用一次-因此就好像它不是递归的一样),那么它就不会崩溃。有谁能帮我一下吗?谢谢
发布于 2013-05-08 14:16:18
检查操作系统中的堆栈大小。
ulimit -s
我认为这是因为堆栈。因为你需要的堆栈似乎在快速增加。
展示你的“头发”,让我们看到更多细节。
https://stackoverflow.com/questions/16310480
复制相似问题