mam wątek w programie (zrobiony do nasłuchu socketów), chciałbym po odebraniu tekstu przekazać go do reszty programu.
wątek:
DWORD WINAPI RecvThread(void* P)
{
...
//jakiś zadeklarowany bufor:
char buff[2048];
int datasize;
//odbieram jakiś z gniazda i chciałbym go przekazać do reszty programu:
char *temp = new char[datasize+1];
temp[datasize]=0;
memcpy(temp,buff,datasize);
PostMessage(Form1->Handle,WM_USER+1,datasize,(int)buff);
...
}
celowo nie zwalniam pamięci przydzielonej dla temp, bo chciałbym ją zwolnić w reszcie programu a tekst ten przekazać.
w programie głównym mam tak:
switch (Msg.message)
{
...
case WM_USER+1:
{
int size = Msg.lParam;
char* tekst = (char*)Msg.wParam;
//tutaj cos robie z tekstem i pozniej go wyswietlam
delete [size] tekst;
break;
}
...
}
po wyswietleniu tekstu okazuje sie ze... no wlasnie... tekst zniknal... przepadl... nima... [???]
czy mógłby mi ktoś wytłumaczyć dlaczego tekst znika (dlaczego ta metoda jest niepoprawna?) oraz jak to poprawnie ten tekst przekazac?
z góry dziękuje za pomoc :)
pozdrawiam