Warning C6001
Using uninitialized memory 'variable'.
Remarks
This warning is reported when an uninitialized local variable is used before it's assigned a value. This usage could lead to unpredictable results. You should always initialize variables before use.
Code analysis name: USING_UNINIT_VAR
Example
The following code generates this warning because variable i
is only initialized if b
is true:
int f( bool b )
{
int i;
if ( b )
{
i = 0;
}
return i; // i is uninitialized if b is false
}
To correct this warning, initialize the variable as shown in the following code:
int f( bool b )
{
int i = -1;
if ( b )
{
i = 0;
}
return i;
}
Heuristics
The following example shows that passing a variable to a function by reference causes the compiler to assume that it's initialized:
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()
}
This supports the pattern of passing a pointer to a variable into an initialization function.
This heuristic can lead to false negatives because many functions expect pointers that point to initialized data. Use SAL annotations, such as _In_
and _Out_
, to describe the function's behavior. The following example calls a function that expects its argument to be initialized, so a warning is generated:
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;
}
See also
Feedback
https://aka.ms/ContentUserFeedback.
În curând: Pe parcursul anului 2024, vom elimina treptat Probleme legate de GitHub ca mecanism de feedback pentru conținut și îl vom înlocui cu un nou sistem de feedback. Pentru mai multe informații, consultați:Trimiteți și vizualizați feedback pentru