Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Leaks XX-XX bytes UnicodeString xX / 7 сообщений из 7, страница 1 из 1
14.02.2022, 16:39
    #40134026
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
Всем доброго дня!

в некоторых программах есть утечки со ссылкой на UnicodeString.
Например:
39 - 36 bytes UnicedeString x 2

Программы как таковые на юникод не переведены.
Не совсем понятно как таковые могут возникать.
Утечки вроде не большие и можно было бы плюнуть на них но хочется понять как таковые возникают применительно именно к UnicodeString.

Спасибо если кто разьяснит или пример подскажет.
...
Рейтинг: 0 / 0
14.02.2022, 16:55
    #40134031
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
Подключи fastmm4, выстави нужные опции в fastmm4.inc, собери проект с отладочной информацией, запусти, закрой, смотри лог - там №№ строк будут, в которых создавались утекающие объекты.
...
Рейтинг: 0 / 0
14.02.2022, 17:53
    #40134046
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
Легко: достаточно, чтобы "деструктор" строки не вызывался.

Это может быть как явным пропуском:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
  TRec = record
    S: String;
  end;
  PRec = ^TRec;

var
  R: PRec;
begin
  New(R);
  R.S := IntToStr(42);
  FreeMem(R); // - "деструктор" пропускается
end;



Так и работой со строкой вне её области видимости:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
type
  TObj = object
    S: String;
  end;

var
  O: TObj;
begin
  O := TObj.Create;
  O.Free;
  O.S := IntToStr(42); // - "деструктора" нет
end;
...
Рейтинг: 0 / 0
14.02.2022, 20:09
    #40134086
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
А во втором случае разве не должно возникнуть исключение? Обьекта уже по идее нет. Или отработает по тому что осталось в памяти получается.
...
Рейтинг: 0 / 0
14.02.2022, 22:33
    #40134105
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
hlopotun,

Не всегда. Этим и отличаются языки с самостоятельным управлением памятью.
...
Рейтинг: 0 / 0
15.02.2022, 10:53
    #40134161
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
Подключи FastMM5 или madExcept, или EurekaLog и посмотри, что создается и не уничтожается.
Это не обязательно могут быть именно переменные String. Может ты забываешь уничтожать, например, TStringList или еще что-то, связанное со строками.
...
Рейтинг: 0 / 0
15.02.2022, 11:42
    #40134180
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Leaks XX-XX bytes UnicodeString xX
X11,

что хошь может быть. Вон, SuperObject внутри юникодные строки использует, даже в неюникодных дельфях. Криво прибили интерфейс - вот и утечка.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Leaks XX-XX bytes UnicodeString xX / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]