C ++ - 程序在函数调用中丢失

时间:2012-05-10 23:03:22

标签: c++

这里我有一段代码,它是名为 Sistema 的类的一部分(所有声明都在一个单独的文件中)。第一个函数应该调用下一个函数,这是一个读取某个树的递归函数( Arbre tree 的自定义实现)。

在运行程序时,输出显示“进入函数”行,就在函数调用之前,但我从未得到“新节点”行。因此,即使在任何递归调用之前,我的程序也会在函数调用和函数本身之间丢失。我之前从未遇到过这样的问题。关于发生什么事的任何线索?

以下是代码:

#include "Sistema.hpp"

    ............

  list<int> Sistema::proc_peticion(int pelicula, int tiempo, int tamano){
    list<int> srv;
    Arbre<int> arb = estructura;
    bool unidad_tmp = false;
    int dist = 0, bw = 0;
    cout << "entering function" << endl;
    camino(srv, arb, pelicula, tiempo, tamano, unidad_tmp, dist, bw);
    return srv;
  }

    ............

  void Sistema::camino(list<int>& srv, Arbre<int>& arb, const int& pel, const int& tmp, const int& size, bool& unidad_tmp, int& dist, int& bw){
    cout << "new node ";
    if (not arb.es_buit()){

        ..................

    }
 }

我试图只留下可能有用的代码部分,以使其更具可读性。如果您需要更多信息,请告诉我。

提前致谢

1 个答案:

答案 0 :(得分:4)

你应该在camino函数中编写一个endl,当你用C / C ++写一个文件时,数据不一定写入文件,而是放在内存缓冲区中直到它被填满或被明确写入(刷新) )到磁盘。

这里可能发生的是写入正在发生,程序继续并在函数内部挂起。如果你不想写一个endl(执行写操作),你可以在之后调用cout.flush()