是否会执行"return"关键字后的语句?

ton*_*gko 2 c++ return visual-c++

我是C++初学者,想知道这个场景的影响:

PCONSOLE_SCREEN_BUFFER_INFOEX GetConsoleInfo(void) {
    WaitForSingleObject(m_hSync);   // m_hSync is HANDLE to mutex created using CreateMutex()

    return m_pcsbi;    // m_pcsbi is of type PCONSOLE_SCREEN_BUFFER_INFOEX

    ReleaseMutex(m_hSync);      // <== will this line be executed?
}
Run Code Online (Sandbox Code Playgroud)

想知道[ReleaseMutex()]会被执行吗?

MSa*_*ers 6

在你的情况下,无法获得该代码.如果您有条件return(例如if (ptr==nullptr) return;),那么当然有条件会跳过回报.但无条件的回报将是最后执行的陈述.

然而,RAII风格的清理确实发生在return.

  • 对于C++初学者,术语"RAII_style清理"可能有点不清楚,你不觉得吗?:) (3认同)