2016-10-04 4 views
0
#include <windows.h> 

int csOpsPrintDataInitialized = 0; 

void ObtainOpsPrintDataCritSect() 
{ 
    CreateCriticalSectionAsNeccessary(); 

    EnterCriticalSection(&csOpsPrintData); 
} // Hp fortify in visual studio 2013 reporting issue: Exception handling. 

하지만 try catch를 사용하면 여전히 동일한 문제가보고됩니다.Visual Studio C++에서 try catch를 사용하는 방법?

void ObtainOpsPrintDataCritSect_sol()] 
{ 
    try 
    { 
     EnterCriticalSection(&csOpsPrintData); 
    } 
    catch(char *msg) 
    { 
    } 
} 

HP는이 권고를 강화 :이 문제는 두 가지 방법으로 피할 수 있습니다 :

  • 랩은 try/catch 블록에서 EnterCriticalSection()를 호출합니다.

  • InitializeCriticalSection() 대신 InitializeCriticalSectionAndSpinCount() 함수를 호출하십시오. 이것은 EnterCriticalSection()이 이벤트를 할당하기보다는 EnterCriticalSection()이 사용하는 이벤트를 미리 할당합니다.

+0

'시도/캐치'가 확실합니까? 나는'__try/__ catch '를 기대한다. 두 개는 의도가 비슷하지만'try'는 C++,'__try'는 Windows,'EnterCriticalSection'은 Windows입니다. – MSalters

답변

0

가 나는 msdn 상태에 EnterCriticalSection에 대한 설명서 때문에 포티의 권고를 무시 거짓 긍정적 인 생각 :

이 가능한 교착 예외를 처리하지 마십시오 대신 응용 프로그램을 디버깅하십시오.