В Z3 есть 2 режима: автоматический подсчет ссылок и ручной.
Я понимаю, как работает ручной подсчет ссылок. Благодаря примеру.
Но как Z3 узнает, когда удалять узел AST в случае автоматического повторного подсчета?
Поскольку Z3_ast является структурой из языка C =>, невозможно отследить все назначения и использования Z3_ast за пределами Z3 после его создания.
Или ссылки трека Z3 только внутри Z3? То есть обновления счетчиков ссылок не выполняются, если вы, например, выполните: ast1 = ast2.