Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 повторное выделение той же памяти.  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 638
Разбираюсь с переводом ПС под ARC (под андроидом), где-то что-то ломается.
При вызове
curr := TPSTypeRec.Create(self);

constructor TPSTypeRec.Create(Owner: TPSExec);
begin
  inherited Create;
  FRefCount := 3;
  FAttributes := TPSRuntimeAttributes.Create(Owner);
end;

constructor TPSRuntimeAttributes.Create(AOwner: TPSExec);
begin
  inherited Create;
  FAttributes := TPSObjectList.Create;
  FOwner := AOwner;
end;


в _ClassCreate для TPSTypeRec выделяется память, все нормально. В конструкторе доходит до строки FAttributes := TPSRuntimeAttributes.Create(Owner);
Затем то же самое идет для TPSRuntimeAttributes, заходит в конструктор TPSRuntimeAttributes, подходит к строке FAttributes := TPSObjectList.Create;
И выделяет память на него - с указателем тем же, что в Self в конструкторе TPSTypeRec. Получается 2 объекта с одним указателем.
Память первого объекта (да и сам объект) перед этим не освобождается. И поблизости от этого адреса тоже.

Перед этим, при ините создается еще одна переменная TPSTypeRec, но там такого нет. Что-то ломается по пути, но что именно и где - непонятно, я даже не могу понять куда копать. Пока из твердых зацепок - вот это 100% повторяемое двойное выделение памяти.

Подскажите, в какую сторону копать?

Delphi 10.3.2, если что.
15 авг 19, 09:08    [21949794]     Ответить | Цитировать Сообщить модератору
 Re: повторное выделение той же памяти.  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3732
Vizit0r
Разбираюсь с переводом ПС под ARC

Скоро ARC выпилят отовсюду. Просто к сведению.
15 авг 19, 10:49    [21949874]     Ответить | Цитировать Сообщить модератору
 Re: повторное выделение той же памяти.  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 638
насколько скоро?
15 авг 19, 11:04    [21949884]     Ответить | Цитировать Сообщить модератору
 Re: повторное выделение той же памяти.  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 688
через пару версий это не настолько скоро )))
попробовал разобраться в том что вы написали
у меня все работает предсказуемо, под каждый объект выделяется память, для каждого добавляется счетчик ссылок
15 авг 19, 11:11    [21949892]     Ответить | Цитировать Сообщить модератору
 Re: повторное выделение той же памяти.  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3732
Vizit0r
насколько скоро?

Точных сроков, боюсь, даже у абракадабры нет, но цель в комментариях к роадмапу была озвучена более чем ясно.
15 авг 19, 11:14    [21949896]     Ответить | Цитировать Сообщить модератору
 Re: повторное выделение той же памяти.  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 638
видимо придется забить.
Переводить код движка, где тонны объектов, как кастомных, так и стандарных, и все это перемешано с указателями - оказалось весьма неинтересно.
Вызов дельфийских функций через Invoke переписал, так что на маках и линухах будет работать, а мобильные платформы пусть ждут когда ARC уберут.
15 авг 19, 16:36    [21950301]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить