当 Z3_ast 对象被删除时是否有回调可用?

Is there a call back available for when a Z3_ast object is deleted?

我正在为 z3 使用 C++ API,所以我不需要担心引用计数或内存管理。

但是,我想根据 std::map<Z3_ast, some_struct>.

使用 std::map 存储针对 z3 AST 的信息

当一个特定的 Z3_ast 对象被删除时,我想删除它的条目 来自这张地图。

有什么方法可以设置一个回调函数,当 Z3_ast 对象引用计数 returns 为 0 并且 Z3_ast 对象被删除?

不,没有这样的回调,但可以想象你可以破解 API 来提供一个。但是,只要至少有一个对 Z3_ast 的引用,引用计数就永远不会下降到 0(并且您的地图包含一个引用,即地图中的那个)。

如果在映射中存储 Z3_ast 时不增加引用计数,引用计数范式就会被打破,这可能会导致非常严重的错误调试。