Programm stürzt bei zweiten Funktionsaufruf ab

Hallo,

Ich habe eine mir zwei Funktion zusammengesucht, leider eine dieser 2 beim zweiten Aufruf löst Windows eine Haltepunkt aus, was beim starten ohne Debugger das bekannte „Problembericht senden“ Fenster anzeigen lässt.
Der Code der ersten Funktion:

int GetProcess(Prozess \*Prozesse, int Max)
{
 PROCESSENTRY32 pe32 = { 0 }; 
 HANDLE hSnapshot = NULL; 

 HINSTANCE hDll = LoadLibrary("kernel32.dll"); 


 pProcess32First=(TH32\_PROCESS)GetProcAddress(hDll,"Process32First"); 
 pProcess32Next=(TH32\_PROCESS)GetProcAddress(hDll,"Process32Next"); 

 hSnapshot = CreateToolhelp32Snapshot(TH32CS\_SNAPPROCESS,0); 
 int proc\_cnt=0,thrd\_cnt=0; 
 if(Max == 0)
 { 
 if (hSnapshot != (HANDLE) -1) 
 { 
 pe32.dwSize = sizeof (PROCESSENTRY32); 


 if (pProcess32First (hSnapshot, &pe32)) 
 { 
 do 
 { 
 proc\_cnt++;
 } 
 while(pProcess32Next (hSnapshot, &pe32)); 
 } 

 CloseHandle (hSnapshot); 
 }
 return proc\_cnt;
 }
 else
 { 
 if (hSnapshot != (HANDLE) -1) 
 { 
 pe32.dwSize = sizeof (PROCESSENTRY32); 
 int proc\_cnt=0,thrd\_cnt=0; 

 if (pProcess32First (hSnapshot, &pe32)) 
 { 
 do 
 { 
 proc\_cnt++;
 sprintf(Prozesse[proc\_cnt].Name, "%s\0", pe32.szExeFile);
 Prozesse[proc\_cnt].Process = ::open\_mouth:penProcess(PROCESS\_TERMINATE, 0, pe32.th32ProcessID);
 Prozesse[proc\_cnt].ID = proc\_cnt;
 Prozesse[proc\_cnt].LengthName = strlen(Prozesse[proc\_cnt].Name);
 cout
und die Zweite:


    
    bool SendProcess(int socket)
    {
     Prozess \*Prozesse=0;
     int size=0;
     int rec=0;
     void \*Buffer=malloc(sizeof(int));
     int Anzahl = GetProcess(NULL, 0);
     int buf=0;
     char \*cBuffer=(char\*)malloc(sizeof(char)\*256);
     if(Anzahl \> 0)
     {
     size = Anzahl\*sizeof(Prozess);
     cout 
    
    Hoffe mir kann jemand helfen, den ich kapiert nicht was da nicht funktioniert.
    
    Gruß Michael

Hallo,

Hab jetzt gelöst das es nicht mehr abstürzt, nutze jetzt statt malloc new und delete, jetzt hab ich das Problem das wenn ich die Funktion 2 nochmal aufrufe kommen nur 2 Symbole raus, bei der ersten Funktion zeigt er mit das pe32.szExeFile, aber das Prozesse.Name wird nicht beschrieben, warum?

Nochmal der aktueller Code:
Hab die Variable Prozesse als Global Variable erstellt.

int GetProcess(int Max)
{
 PROCESSENTRY32 pe32 = { 0 }; 
 HANDLE hSnapshot = NULL; 
 pProcess32First=0;
 pProcess32Next=0;
 HINSTANCE hDll = LoadLibrary("kernel32.dll"); 


 pProcess32First=(TH32\_PROCESS)GetProcAddress(hDll,"Process32First"); 
 pProcess32Next=(TH32\_PROCESS)GetProcAddress(hDll,"Process32Next"); 

 hSnapshot = CreateToolhelp32Snapshot(TH32CS\_SNAPPROCESS,0); 
 int proc\_cnt=0,thrd\_cnt=0; 
 if(Max == 0)
 { 
 if (hSnapshot != (HANDLE) -1) 
 { 
 pe32.dwSize = sizeof (PROCESSENTRY32); 


 if (pProcess32First (hSnapshot, &pe32)) 
 { 
 do 
 { 
 proc\_cnt++;
 } 
 while(pProcess32Next (hSnapshot, &pe32)); 
 } 

 CloseHandle (hSnapshot); 
 }
 return proc\_cnt-2;
 }
 else
 { 
 if (hSnapshot != (HANDLE) -1) 
 { 
 pe32.dwSize = sizeof (PROCESSENTRY32); 
 int proc\_cnt=0,thrd\_cnt=0; 

 if (pProcess32First (hSnapshot, &pe32)) 
 { 
 do 
 { 
 sprintf(Prozesse[proc\_cnt].Name, "%s\0", pe32.szExeFile);
 Prozesse[proc\_cnt].Process = ::open\_mouth:penProcess(PROCESS\_TERMINATE, 0, pe32.th32ProcessID);
 Prozesse[proc\_cnt].ID = proc\_cnt;
 Prozesse[proc\_cnt].LengthName = strlen(Prozesse[proc\_cnt].Name);
 //cout 0)
 {
 size = Anzahl\*sizeof(Prozess);
 \*Anz=Anzahl;
 cout 

Gruß Michael