• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Многопоточность Winapi, Tstringlist, Access Violation

  • Автор темы Автор темы Vadik(R)
  • Дата начала Дата начала
V

Vadik(R)

Здравствуйте, уважаемые форумчане!

Давно я не посещал этот форум, но программистские проблемы всё равно появляются.

В этот раз я решил сделать для себя тестовое многопоточное приложение в Delphi 7, да столкнулся с проблемой Access Violation, если в потоках есть TStringList и ему необходимо чуток памяти.

Вот код:
Код:
{$MAXSTACKSIZE $0E000000}

program MultiThreads;

{$APPTYPE CONSOLE}

uses
Classes, SysUtils, Windows;

var
i: Integer;
ThreadId: Cardinal;
Threads: Array [1..100] of THandle;

function MyThread(param: Pointer): Cardinal; stdcall;
var
Content: TStringList;
i: Integer;
begin
Content := TStringList.Create;
for i := 1 to 10000 do
Content.Add('asdxcvajdaslkdjlasjdlkasjdlkasjdlkasjdljsaldjaslkdj');
Content.Free;
MyThread := 0;
end;

begin
for i := 1 to 5 do
begin
Threads[i] := CreateThread(nil, 10240000, @MyThread, nil, 0, ThreadId);
end;
WaitForMultipleObjects(5, @Threads, True, INFINITE);
for i := 1 to 5 do
begin
CloseHandle(Threads[i]);
end;
end.
Пытался поиграться со вторым параметром при создании потока (изначально был 0, поставил в 10240000) и решил установить
{$MAXSTACKSIZE $0E000000} в надежде, что как-то поможет, но это никак не помогло, Access Violation всё равно появляется. Скажите, в чём может быть дело?
 
Нагуглил, стоить написать:
Код:
IsMultiThread := True;
Может кому пригодится :huh:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD