Aracılığıyla paylaş


Uyarı C6001

Başlatılmamış 'variable' belleğini kullanma.

Açıklamalar

Bir değer atanmadan önce başlatılmamış bir yerel değişken kullanıldığında bu uyarı bildirilir. Bu kullanım öngörülemeyen sonuçlara yol açabilir. Kullanmadan önce değişkenleri her zaman başlatmanız gerekir.

Kod analizi adı: USING_UNINIT_VAR

Örnek

Değişken i yalnızca true olduğunda b başlatıldığından aşağıdaki kod bu uyarıyı oluşturur:

int f( bool b )
{
   int i;
   if ( b )
   {
      i = 0;
   }
   return i; // i is uninitialized if b is false
}

Bu uyarıyı düzeltmek için aşağıdaki kodda gösterildiği gibi değişkeni başlatın:

int f( bool b )
{
   int i = -1;

   if ( b )
   {
      i = 0;
   }
   return i;
}

Buluşsal yöntemler

Aşağıdaki örnekte, bir değişkenin bir işleve başvuruyla geçirilmesinin derleyicinin başlatıldığını varsaymaya neden olduğu gösterilmektedir:

void init( int& i );

int f( bool b )
{
   int i;

   init(i);

   if ( b )
   {
      i = 0;
   }
   return i; // i is assumed to be initialized because it's passed by reference to init()
}

Bu, bir işaretçiyi bir değişkene başlatma işlevine geçirme düzenini destekler.

Birçok işlev, başlatılan verileri işaret eden işaretçiler beklediği için bu buluşsal durum hatalı negatiflere yol açabilir. İşlevin davranışını açıklamak için ve _Out_gibi _In_ SAL ek açıklamalarını kullanın. Aşağıdaki örnekte bağımsız değişkeninin başlatılmasını bekleyen bir işlev çağrılır, bu nedenle bir uyarı oluşturulur:

void use( _In_ int& i );

int f( bool b )
{
   int i;

   use(i); // uninitialized variable warning because of the _In_ annotation on use()

   if ( b )
   {
      i = 0;
   }
   return i;
}

Ayrıca bkz.

Derleyici Uyarısı (düzey 1 ve düzey 4) C4700