Re: Delphi 7, работа со стройкой, утечка памяти.
От: Maslan Россия  
Дата: 03.04.13 06:33
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Добрый день, подскажите пожалуйста, где тут утечка происходит, через каждые два три запуска данной процедуры, EurekaLog жалуется на не освобожденную память..


А>procedure GetRandomName(var Buffer: String; StrLen: Integer; const Hex: Boolean = False);

А>const
А> FillMap1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
А> FillMap2 = '0123456789ABCDEF';
А>var
А> i: Integer;
А>begin
А> Randomize;
генератор я бы инициализировал где-нибудь в onCreate, т.к. смыл получается не совсем "RandomName" — при каждом вызове начинаем заново.

А> for i:=1 to StrLen do

А> if (Hex) then
А> Buffer:=Buffer + FillMap2[Random(Length(FillMap2)+1)+1] else // Жалуется на эти
А> Buffer:=Buffer + FillMap1[Random(Length(FillMap1)+1)+1]; // 2 строки в зависимости от Hex=true или false.
В адресации массивов FillMap* непонятные операции (если это не хитрая часть алгоритма). Так (для FillMap2, например):
Length=16
0<=Random(16+1)<=16
и индекс [Random(16+1)+1] лежит в диапазоне 1..17, а вот элемента №17 в строке как-то уже и нету — должен вылететь Access Violation по идее.
А>end;

А с памятью — ну кроме адресации несуществующего элемента, вроде не вижу ничего. Сейчас D7 докачается из дома — попробую прогнать...
А>Помогите разобраться, в чем тут дело..



-- С уважением...
Cообщение написано в &lt;&lt; RSDN@Home 1.2.0 alpha 5 rev. 1539&gt;&gt;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.