Sdílet prostřednictvím


C6242

Upozornění C6242: Přechod z tohoto bloku try vynutí místní uvolnění.Způsobuje ztráty výkonu

Toto upozornění znamená, že příkaz skoku způsobí opuštění chráněného blok try-finally tokem řízení jinak než předáním řízení.

Opuštění chráněného bloku try-finally jinak než předáním řízení z posledního příkazu nastane místní uvolnění.Místní uvolnění obvykle vyžaduje přibližně 1000 strojových instrukcí počítače, proto způsobuje ztráty výkonu.

K opuštění chráněného bloku try-finally lze použít klíčové slovo _leave.

Příklad

Následující kód generuje toto upozornění:

#include <malloc.h>
void DoSomething(char *p); // function can throw exception

int f( )
{
   char *ptr = 0;
   __try 
   {
      ptr = (char*) malloc(10);
      if ( !ptr ) 
      {
         return 0;   //Warning: 6242
      }
      DoSomething( ptr );
   }
   __finally 
   {
      free( ptr );
   }
   return 1;
}

Chcete-li opravit toto upozornění, použijte klíčové slovo __leave, jak je znázorněno v následujícím kódu:

#include <malloc.h>
void DoSomething(char *p); 
int f()
{
   char *ptr = 0;
   int retVal = 0;

   __try 
   {
      ptr = (char *) malloc(10);
      if ( !ptr )
      {
         retVal = 0;
         __leave;   //No warning
      }
      DoSomething( ptr );
      retVal = 1;
   }
   __finally
   {
      free( ptr );
   }

   return retVal;
}

Viz také

Referenční dokumentace

Zkuste nakonec prohlášení