Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Утечка памяти!!Проблемы с CreateProcess!!HELP!

1.8K
10 августа 2006 года
GLAGOLA
80 / / 06.11.2004
Я вот таким образом создаю процесс:
CreateProcess(nil,Pchar(FileName),nil,nil,false,CREATE_NEW_PROCESS_GROUP or REALTIME_PRIORITY_CLASS ,nil,nil,temp,temp1)
И у меня проблема в том что я создаю процесс получаю код завершения и потом еще раз создаю его же но с другими параметрами коммандной строки, но при каждом создании процесса он выделяет память в родительском процессе но не освобождает и все это накапливается и приводит к тому что после 1000000 запусков озушки не остается и родительское приложение больше не может создать процес..что делать подскажите?"
6.8K
10 августа 2006 года
Romikgy
84 / / 28.04.2005
ты сам представь REALTIME_PRIORITY_CLASS и 1000000 процессов!
И при чем здесь утечка памяти?
1.8K
10 августа 2006 года
GLAGOLA
80 / / 06.11.2004
Процесс создался подождал пока завершится, опять запустил опять подождал показавершиться и тд...так 1000000 раз или больше...при каждом запуске процесса выделяется память а после того как он завершился память не освобождается, она как будто пропадает в таск менеджере кол-во занятой памяти растет....
6.8K
11 августа 2006 года
Romikgy
84 / / 28.04.2005
А ты попробуй без твоей проги запустить хоть с 10 раз, и посмотреть будет ли утечка памяти.
А вообще без исходника выложеного (из твоей проги) советовать чтото бесполезно
303
11 августа 2006 года
makbeth
1.0K / / 25.11.2004
CloseHandle вызываешь?
Выкладывай исходник, касаемый процессов. Будем смотреть...
1.8K
11 августа 2006 года
GLAGOLA
80 / / 06.11.2004
fillchar(temp,sizeof(temp),0);
while not CreateProcess(nil,Pchar(Filename),nil,nil,false,CREATE_NEW_PROCESS_GROUP or REALTIME_PRIORITY_CLASS ,nil,nil,temp,temp1) do;
GetExitCodeProcess(temp1.hProcess,x);
while (x = STILL_ACTIVE) do
GetExitCodeProcess(temp1.hProcess,x);
///////
CloseHandle(temp1.hProcess);

после добавления CloseHandle работать стало побыстрее но все равно утечка продолжается((
303
11 августа 2006 года
makbeth
1.0K / / 25.11.2004
мда...
попробуй так:
Код:
if CreateProcess(nil,
                 PChar(Filename),
                 nil, nil,
                 false,
                 // CREATE_NEW_PROCESS_GROUP or  //Зачем ???
                 REALTIME_PRIORITY_CLASS,
                 nil, nil,
                 temp, // Эта переменная я так понимаю  STARTUP_INFO?
                 temp1) <> 0 then
begin
    // Процес запущен, ждем завершения
    // Вызов WaitForSingleObject делает то же самое что и цикл,
    // но прога не грузит процессор
    WaitForSingleObject(temp1.hProcess, INFINITE);
    // если надо, чтобы приложение откликалось на действия пользователя
    // используй такую строку:
    // while WaitForSingleObject(temp1.hProcess, 100) = WAIT_TIMEOUT do
    //    Apllication.ProcessMessages;
    GetExitCodeProcess(temp1.hProcess, x);
    CloseHandle(temp1.hThread);
    CloseHandle(temp1.hProcess);
end;
1.8K
11 августа 2006 года
GLAGOLA
80 / / 06.11.2004
пасиба за помощь, он я решил проблему по другому я нашел исходники проги которую запускаю и пределал ее в библиотеку..а дальше все быстрее пошло))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог