Beep desde thread, new + delete

Iniciado por patilanz, 23 Agosto 2015, 18:52 PM

0 Miembros y 1 Visitante están viendo este tema.

patilanz

Hola tengo esto:
Código (cpp) [Seleccionar]
bool SaveBeep(int a, int b){
int *c = new int(2);
c[0] = a;
c[1] = b;
if (!CreateThread(0, 0, beepThread, (LPVOID)c, 0, 0))
return 0;
return 1;
}

DWORD WINAPI beepThread(LPVOID p){
int * a = (int*)p;
Beep(a[0], a[1]);
delete[]a;
return 0;
}


Error de memoria en delete[]a;
También probé:
Código (cpp) [Seleccionar]
delete &a[0];
delete &a[1];

pero sigue igual.
Primero probé así pero no recibía los int
Código (cpp) [Seleccionar]
bool SaveBeep(int a, int b){
int c[2] = { a, b };
if (!CreateThread(0, 0, beepThread, (LPVOID)c, 0, 0))
return 0;
return 1;
}

DWORD WINAPI beepThread(LPVOID p){
int * a = (int*)p;
Beep(a[0], a[1]);
return 0;
}


Ideas??

Un saludo

ivancea96

#1
Código (cpp) [Seleccionar]
new int(2)
Eso es para crear 1 int inicializado a 2.

Código (cpp) [Seleccionar]
new int[2]
Así es.


Y bueno, del segundo código comentar, que no aseguras de ningún modo que la variable 'c' seguirá existiendo cuando el thread acceda a ella.

patilanz