Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: patilanz en 23 Agosto 2015, 18:52 PM

Título: Beep desde thread, new + delete
Publicado por: patilanz en 23 Agosto 2015, 18:52 PM
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
Título: Re: Beep desde thread, new + delete
Publicado por: ivancea96 en 23 Agosto 2015, 19:04 PM
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.
Título: Re: Beep desde thread, new + delete
Publicado por: patilanz en 24 Agosto 2015, 01:54 AM
Despiste  :-\
Gracias..