Foro de elhacker.net

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
  1. bool SaveBeep(int a, int b){
  2. int *c = new int(2);
  3. c[0] = a;
  4. c[1] = b;
  5. if (!CreateThread(0, 0, beepThread, (LPVOID)c, 0, 0))
  6. return 0;
  7. return 1;
  8. }
  9.  
  10. DWORD WINAPI beepThread(LPVOID p){
  11. int * a = (int*)p;
  12. Beep(a[0], a[1]);
  13. delete[]a;
  14. return 0;
  15. }

Error de memoria en delete[]a;
También probé:
Código
  1. delete &a[0];
  2. delete &a[1];
pero sigue igual.
Primero probé así pero no recibía los int
Código
  1. bool SaveBeep(int a, int b){
  2. int c[2] = { a, b };
  3. if (!CreateThread(0, 0, beepThread, (LPVOID)c, 0, 0))
  4. return 0;
  5. return 1;
  6. }
  7.  
  8. DWORD WINAPI beepThread(LPVOID p){
  9. int * a = (int*)p;
  10. Beep(a[0], a[1]);
  11. return 0;
  12. }

Ideas??

Un saludo


Título: Re: Beep desde thread, new + delete
Publicado por: ivancea96 en 23 Agosto 2015, 19:04 pm
Código
  1. new int(2)
Eso es para crear 1 int inicializado a 2.

Código
  1. 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..