我正在使用z ++的C ++ API,所以我不需要担心引用计数或内存管理。
但是,我想使用std::map<Z3_ast, some_struct>
行的std :: map存储针对z3 AST的信息。
删除特定的Z3_ast对象时,我想删除它的条目 从这张地图。
有没有办法设置一个回调函数,该函数将被调用 Z3_ast对象引用计数返回0并删除Z3_ast对象?
答案 0 :(得分:1)
不,没有这样的回调,但可以想象你可以破解API提供一个。但是,只要至少有一个对Z3_ast
的引用,引用计数就不应该下降到0(并且您的地图会保留一个引用,即地图中的引用)。
如果你没有在地图中存储Z3_ast
时增加引用计数,那么引用计数范例就会被打破,这可能会导致非常困难的错误调试。