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

C++ - Program gets lost in a function call

本文关键字:函数调用 程序 C++      更新时间:2023-10-16

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

运行程序时,输出显示"进入函数"行,就在功能调用之前,但我从未得到"新节点"行。所以我的程序在函数调用和函数本身之间的某个地方丢失了,甚至在任何递归调用之前。我以前从未遇到过这样的问题。关于发生了什么的任何线索?

这是代码:

#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()){
        ..................
    }
 }

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

提前致谢

你应该在

camino 函数中写入一个 endl,当你在 C/C++ 中写入文件时,数据不一定会写入文件,而是位于内存缓冲区中,直到它被填满或被显式写入(刷新)到磁盘。

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