递归函数返回列表中的分段错误

时间:2013-04-30 23:20:03

标签: c++ list recursion segmentation-fault

我有一个递归函数,它返回一个结构列表。

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(只有一次函数调用 - 因此好像它不是递归的)时,它就不会崩溃。有人可以帮我这个吗? 感谢

1 个答案:

答案 0 :(得分:0)

检查操作系统中的堆栈大小。

ulimit -s

我建议这是因为堆栈。 你需要的堆栈似乎很快就会增加。

显示您的“头发”以获取更多详细信息供我们查看。