C6244

avviso C6244: la dichiarazione locale di <variabile> nasconde la precedente dichiarazione alla riga <riga> di <file>

L'avviso indica che una una dichiarazione ha lo stesso nome di una dichiarazione in corrispondenza di un ambito esterno e nasconde la dichiarazione precedente.Non sarà possibile fare riferimento alla dichiarazione precedente dall'interno dell'ambito locale.Qualsiasi utilizzo non previsto della dichiarazione precedente avrà come risultato la dichiarazione locale che indica che l'avviso identifica solo una sovrapposizione di ambiti e non una sovrapposizione di durate.

Esempio

Il codice seguente genera questo avviso:

#include <stdlib.h>
#pragma warning(push)

// disable warning C4101: unreferenced local variable 
#pragma warning(disable: 4101) 

int i;
void f();
void (*pf)();

void test()
{
    // Hide global int with local function pointer
    void (*i)();  //Warning: 6244

     // Hide global function pointer with an int
    int pf;     //Warning: 6244
}
#pragma warning(pop)

Per risolvere il problema, utilizzare il seguente codice di esempio:

#include <stdlib.h>
#pragma warning(push)
// disable warning C4101: unreferenced local variable 
#pragma warning(disable: 4101) 

int g_i;          // modified global variable name
void g_f();       // modified global function name
void (*f_pf)();   // modified global function pointer name

void test()
{
    void (*i)();
    int pf;
}
#pragma warning(pop)

Quando si utilizza l'allocazione di memoria, esaminare il codice per determinare se un'allocazione è stata salvata in una variabile e liberata da un'altra variabile.