169 похожих чатов

while (1) { my $a =

{};
$a->{func} = sub {
$a->{cnt}++;
};
}

Тут есть утечка - почему и как поправить?

24 ответов

7 просмотров

Циклическая ссылка?

Warstone- Автор вопроса
Alex S
Циклическая ссылка?

Да и как это разорвать так, чтобы не потерять работоспособность кода.

Warstone- Автор вопроса
Ivan
Weak ref )

На что?

Warstone
На что?

Часть ссылок не должна считать дочерние ссылки

Warstone- Автор вопроса
Alex S
Передать cnt, все скаляры указатели

Так неудобно-же. Прдставь что счетчиков 100500

Warstone
Так неудобно-же. Прдставь что счетчиков 100500

Об этом заботится интерпретатор.

Warstone- Автор вопроса
Ivan
Об этом заботится интерпретатор.

Нет. Тут должен заботиться ты.

Warstone
Нет. Тут должен заботиться ты.

Ээээ, слюшай, я языком с динамическим выделением памяти вашпе нэ для это занималса

Warstone- Автор вопроса
Warstone
эээ а как перл следит за памятью?

Да зачэм это? Как хочет, таа и следит. )

Warstone
Так неудобно-же. Прдставь что счетчиков 100500

Сорри, а это вообще идиоматично присваивать замыкание члену словаря? Прост я в питоне ни разу не встречал, чтобы замыкание (кроме декораторов, но там тоже проблем на практике не возникает) становилось методом обьекта Точнее вопрос, проблема с утечкой в замыканиях, это проблема перла, или в других языках так же

Warstone- Автор вопроса
Alex S
Сорри, а это вообще идиоматично присваивать замыка...

Так в том и соль чтобы замкнуть весь словарь (хотя тут объект). Проблема в том что замыкание кладется в сам объект и возникает циклическая ссылка

Alex S
Сорри, а это вообще идиоматично присваивать замыка...

В нормальных языках это асан найдет и отстрелит

Sergei Zhmylove
В нормальных языках это асан найдет и отстрелит

Кхм, а если что, это так-то прототип ООП.

Warstone
На что?

weaken $a->{func} так норм?

Warstone- Автор вопроса
Warstone
Нет

почему?

use Scalar::Util "weaken"; while (1) { my $a = {}; $a->{func} = sub { $a->{cnt}++; }; weaken $a; } а тут какие минусы ?

Warstone- Автор вопроса
Alexey V
use Scalar::Util "weaken"; while (1) { my $a =...

Запусти. Утечка останется

Alexey V
use Scalar::Util "weaken"; while (1) { my $a =...

Лол, тебе не понятно что ли?

Alexey V
use Scalar::Util "weaken"; while (1) { my $a =...

Ты попробуй вызвать func :) и потом для наглядности посмотри, что будет в $a

Похожие вопросы

Обсуждают сегодня

Вместо import и library придется писать importlib?
The Bird of Hermes
19
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
12
а как с таким борятся ? про термин стак тут мне пока не попадалось ghci> foldr (\(CotMD n ctM _) (mstep,pos) -> if ctM > mstep then (ctM, n) else (mstep, pos)) (0,0) $ take ...
Fedor
13
вот вопрос, вот про это type Events = [String] type Probs = [Double] у курта есть задание Если бы ваши типы Events и Probs были самостоятель­ ными типами данных, а не просто...
Fedor
8
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
А ещё docker можно к ассемблеру прикрутить. В целом, системы сборки это настолько несвязанная вещь... Это оффтоп, можно сказать, во всех чатах. Это просто проект, который помо...
КТ315
22
сурсы: import std/asyncdispatch, std/httpclient, std/json, std/sequtils, std/strutils, std/unicode, std/unidecode, std/uri, uuid4, regex const GPT4_API...
Qtless Qtless
4
получается, что он находит одинаковое колво тегов, с разными именами, или я что тто не понял в таксоупе ?
Fedor
46
Раз пошла тема про XML... Delphi XE 10.4.2(но это не важно), XML Data Binding Несколько XSD. В основном содержатся include на расширения. Несколько Namespace, это важно. Бин...
Alexey Gavrilov
4
Кто-нибудь может проверить на 11.3 и более ранних версиях, последнее число в трех нижних строках одно и тоже или нет? var Dict: TDictionary<Integer, string>; i, j: Intege...
Boris N (MBo)
6
Карта сайта