Partilhar via


C6335

Note

This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

warning C6335: leaking process information handle <handlename>

This warning indicates that the process information handles returned by the CreateProcess family of functions need to be closed using CloseHandle. Failure to do so will cause handle leaks.

Example

The following code generates this warning:

#include <windows.h>  
#include <stdio.h>  
  
void f( )  
{  
    STARTUPINFO si;  
    PROCESS_INFORMATION pi;  
  
    ZeroMemory( &si, sizeof(si) );  
    si.cb = sizeof(si);  
    ZeroMemory( &pi, sizeof(pi) );  
  
    // Start the child process.   
    if( !CreateProcess( "C:\\WINDOWS\\system32\\calc.exe",  
                        NULL,    
                        NULL,               
                        NULL,                
                        FALSE,               
                        0,                   
                        NULL,                
                        NULL,                
                        &si,    // Pointer to STARTUPINFO structure.  
                        &pi ) ) // Pointer to PROCESS_INFORMATION  
  {  
    puts("Error");  
    return;  
  }  
    // Wait until child process exits.  
    WaitForSingleObject( pi.hProcess, INFINITE );  
    CloseHandle( pi.hProcess );  
}  

To correct this warning, call CloseHandle (pi.``hThread) to close thread handle as shown in the following code:

#include <windows.h>  
#include <stdio.h>  
  
void f( )  
{  
    STARTUPINFO si;  
    PROCESS_INFORMATION pi;  
  
    ZeroMemory( &si, sizeof(si) );  
    si.cb = sizeof(si);  
    ZeroMemory( &pi, sizeof(pi) );  
  
    // Start the child process.   
    if( !CreateProcess( "C:\\WINDOWS\\system32\\calc.exe",  
                        NULL,    
                        NULL,               
                        NULL,                
                        FALSE,               
                        0,                   
                        NULL,                
                        NULL,                
                        &si,    // Pointer to STARTUPINFO structure.  
                        &pi ) ) // Pointer to PROCESS_INFORMATION  
    {  
      puts("Error");  
      return;  
    }  
  
    // Wait until child process exits.  
    WaitForSingleObject( pi.hProcess, INFINITE );  
    CloseHandle( pi.hProcess );  
    CloseHandle( pi.hThread );  
}  

For more information, see CreateProcess Function and CloseHandle Function.