ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

23.08.2009, 22:59
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Как при вызове потоков с помощью: CreateThread()
Очистить память по завершению потоков?
|
|
|

23.08.2009, 23:07
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 НTL ты хоть сам понял что сказал?
|
|
|

23.08.2009, 23:11
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Сообщение от slesh
2 НTL ты хоть сам понял что сказал?
ммм...
В общем нужно по завершению потока удалить его...
|
|
|

23.08.2009, 23:46
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
вконце функции потока ставь ExitThread(0) типа
Код:
DWORD _stdcall ThreadProc(void * p)
{
............
ExitThread(0);
return 0;
}
Или на Delphi
Код:
function ThreadProc(p:pointer):DWORD; stdcall;
begin
.............
ExitThread(0);
result := 0;
end;
Последний раз редактировалось slesh; 24.08.2009 в 00:07..
|
|
|

24.08.2009, 00:04
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Сообщение от slesh
вконце функции потока ставь ExitThread(0) типа
Код:
DWORD ThreadProc(void * p)
{
............
ExitThread(0);
return 0;
}
Или на Delphi
Код:
function ThreadProc(p:pointer):DWORD;
begin
.............
ExitThread(0);
result := 0;
end;
Все равно выдает ошибку, если снова пытаться создать потоки
|
|
|

24.08.2009, 00:09
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Может ты не правильно создаеш? или недоконца доходит функция завершения.
когда создаеш поток то не забывай закрывать дискриптор
|
|
|

24.08.2009, 00:37
|
|
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме: 5209663
Репутация:
357
|
|
Сообщение от slesh
Может ты не правильно создаеш? или недоконца доходит функция завершения.
когда создаеш поток то не забывай закрывать дискриптор
Вот:
Код:
procedure Getdata;
var
len:integer;
ret:string;
begin
form1.Memo2.Lines.Add(inttostr(random(111)));
ExitThread(0);
end;
procedure TForm1.Button8Click(Sender: TObject);
var
thId:cardinal;
i : Integer;
begin
For i := 1 to 100 do
begin
CreateThread(0,0,@Getdata,nil,0,thid);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ws:TWSAData;
begin
WsaStartup($202,ws);
application.Title:='HTTP Sender';
end;
Это из HTTP Sender, но при попытки снова создать потоки получаем ошибку, я не думаю что здесь не доходит до: ExitThread(0);
|
|
|

24.08.2009, 01:07
|
|
Познающий
Регистрация: 17.03.2007
Сообщений: 98
Провел на форуме: 193152
Репутация:
45
|
|
Глюк при чтении файла... Текстовые файлы читает наура, а вот двоичные (картинки, архивы и т.п.) только первые 5-10 байт. Где косяк?
Код:
Function GetBuff(szFile: PChar): PChar;
Var
hFile, dwSize, dwBytes: DWORD;
Begin
Result:='';
hFile:=CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If hFile<>INVALID_HANDLE_VALUE then
Begin
dwSize:=GetFileSize(hFile, nil);
Result:=VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
End;
CloseHandle(hFile);
End;
|
|
|

24.08.2009, 20:44
|
|
Познающий
Регистрация: 17.03.2007
Сообщений: 98
Провел на форуме: 193152
Репутация:
45
|
|
Сообщение от 2pick
Глюк при чтении файла... Текстовые файлы читает наура, а вот двоичные (картинки, архивы и т.п.) только первые 5-10 байт. Где косяк?
Код:
Function GetBuff(szFile: PChar): PChar;
Var
hFile, dwSize, dwBytes: DWORD;
Begin
Result:='';
hFile:=CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If hFile<>INVALID_HANDLE_VALUE then
Begin
dwSize:=GetFileSize(hFile, nil);
Result:=VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
End;
CloseHandle(hFile);
End;
Кто-то поможет все таки? 
|
|
|

25.08.2009, 17:22
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Сообщение от 2pick
Сообщение от 2pick
Глюк при чтении файла... Текстовые файлы читает наура, а вот двоичные (картинки, архивы и т.п.) только первые 5-10 байт. Где косяк?
Код:
Function GetBuff(szFile: PChar): PChar;
Var
hFile, dwSize, dwBytes: DWORD;
Begin
Result:='';
hFile:=CreateFile(szFile, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If hFile<>INVALID_HANDLE_VALUE then
Begin
dwSize:=GetFileSize(hFile, nil);
Result:=VirtualAlloc(nil, dwSize, MEM_COMMIT, PAGE_READWRITE);
ReadFile(hFile, Result^, dwSize, dwBytes, nil);
End;
CloseHandle(hFile);
End;
Кто-то поможет все таки? 
Присоеденяюсь. Тоже очень интересен ответ.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|