Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизУтечка памяти в CAPICOM. Как бороться? Найти похожие ветки
← →
Василий_М (2004-10-29 10:11) [0]Господа, есть проблема с утечrой памяти в CAPICOM. При вызове EnvelopedData.Encrypt не освобождается память от предыдущего вызова EnvelopedData.Encrypt.
В чем проблема, может кто сталкивался?
Ниже приведен код:
var EnvelopedData : IEnvelopedData;
begin
EnvelopedData := CreateOleObject("CAPICOM.EnvelopedData") as IEnvelopedData;
// тут заглядываем в хранилище и назначаем сертификат для EnvelopedData
// ....... пропускаем ....
// назначили сертификаты
// шифрование
for i := 0 to 1000 do
begin
EnvelopedData.Content := "большая строка(на пару тысяч байтов)";
Result := EnvelopedData.Encrypt(CAPICOM_ENCODE_ANY); // тут подскакивает память
// в предыдущей строке подскакивает память(то нормально)
// но при следующем проходе цикла - предудущие затраты памяти должны,
// казалось бы, освободиться
// но не освобождаются и все, и при каждом проходе - копятся
end;
EnvelopedData := nil; // самое обидное - накопленная память не освобождается даже здесь
end;
← →
Amoeba © (2004-10-29 11:17) [1]
> не освобождается память от предыдущего вызова EnvelopedData.Encrypt.
На чем основано сие утверждение?
← →
Василий_М (2004-10-29 11:26) [2]>>На чем основано ...
Смотрю в диспетчере задач расход памяти процессом. Строки довольно большого размера, поэтому скачок бросается в глаза.
← →
Reindeer Moss Eater © (2004-10-29 11:27) [3]"Если на клетке с тигром написано ...."
В общем не верь глазам своим.
← →
Romkin © (2004-10-29 11:31) [4]Винда сама думает, отдавать-не отдавать. Профайлером смотри :)
← →
Василий_М (2004-10-29 11:39) [5]2 Reindeer Moss Eater
:), шутка хорошая, но тем не менее мне не на много легче.
Как я уже сказал, шифруются большие объемы. Поэтому, память съедается очень быстро со всеми вытекающими отсюда последствиями.
Просто хотелось бы выснить у тех, кто реализовывал подобную задачу - только у меня такое наблюдается или это уже было кем-то подмечено? Или я что-то упускаю?
← →
Reindeer Moss Eater © (2004-10-29 11:43) [6]Дык используй тогда прямо CryptoAPI
← →
Василий_М (2004-10-29 12:49) [7]Хотелось бы выснить у тех, кто реализовывал подобную задачу - только у меня такое наблюдается или это уже было кем-то подмечено? Или я что-то упускаю?
← →
Reindeer Moss Eater © (2004-10-29 12:55) [8]тебе же сказали в [4]
← →
Reindeer Moss Eater © (2004-10-29 13:00) [9]При вызове EnvelopedData.Encrypt не освобождается память от предыдущего вызова EnvelopedData.Encrypt.
Это еще не признак утечки памяти.
Если последовательный многократный вызов приводит в итоге к съеданию всей памяти - это утечка.
А если диспетчер что то там показал после предыдущего вызова - это еще ничего не значит.
← →
Василий_М (2004-10-29 13:24) [10]2 Reindeer Moss Eater
Это еще не признак утечки памяти.
Если последовательный многократный вызов приводит в итоге к съеданию всей памяти - это утечка.
Я специально продемонстрировал цикл для того чтобы показать "последовательный многократный вызов". Как раз при нем и имеет место быть "утечка".
Хорошо, спасибо и на этом, постараюсь разобраться в чем нем дело.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c