执行递归函数时,c ++应用程序崩溃

时间:2018-05-09 03:43:38

标签: c++ function recursion visual-c++ clr

我有一个名为btnTimeIn的按钮,调用identifyStaff()函数:

public: System::Void btnTimeIn_Click(System::Object^  sender, System::EventArgs^  e) {
        this->identifyStaff();
}

我的identifyStaff()函数正在检查员工/用户是否被识别。如果未识别,则会出现一个带有确定按钮的消息框,如果单击ok按钮,将再次调用identifyStaff()功能。

private: System::Void identifyStaff() {
uint32  flag = 0; // 1:accept or 0:reject
... some code beign skip
flag = 1;

... some code being skip



// accept or if finger print was indentified
     if (flag == 1){
         // Open confirmation form
     }
     else 
     {
        if (MessageBox::Show("Staff unidentified. Please rescan again.",
            "Timestamp", MessageBoxButtons::YesNo,
            MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes) {
            this->identifyStaff();
        }
        else {
            // do nothing. Close the MessageBox
        }
     }
}

现在这就是我在运行应用程序时所做的事情:

  
      
  1. 点击'按钮
  2.   
  3. 我将未注册的手指放在生物识别中
  4.   
  5. 出现消息框,其中包含重试按钮以重试。
  6.   
  7. 我在消息框中单击“重试/确定”按钮
  8.   
  9. 再次将手指放入生物识别(此时,已注册的手指)
  10.   
  11. 识别成功,确认表格打开。
  12.   
  13. 我关闭确认表单,然后应用程序崩溃。
  14.   

我仍然是c ++的初学者,还没有深入研究过递归函数。

那么,为什么我会收到此错误/为什么我的应用程序崩溃?

提前感谢您分享您的知识。

更新 我在post中更新我的代码以显示标志变量。

1 个答案:

答案 0 :(得分:0)

看起来递归函数的条件永远不会设置为true,最终会出现堆栈溢出异常。您从未修改identified内的identifyStaff变量。