Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1098889541
Tack
2004-10-27 19:05
2004.11.14
UNICODE и тип String в национальных версиях Win32


3-1097618520
saNat
2004-10-13 02:02
2004.11.14
ADO и MS Access


3-1098106003
Елена
2004-10-18 17:26
2004.11.14
Дата в dBAse


14-1098685930
snake1977
2004-10-25 10:32
2004.11.14
Вопрос новичка


14-1097733984
Skier
2004-10-14 10:06
2004.11.14
Отстал от жизни ! :) Помогите советом !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский