Raf*_*fid 5 memory-management llvm
我正在努力寻找如何释放 LLVM 函数分配的内存。例如,当我调用函数Function::Create()
创建LLVM函数时,如何释放分配给它的内存?实际上这同样适用于许多 LLVM 函数IRBuilder::CreateAlloca()
,如IRBuilder::CreateStore()
、 等。有什么想法吗?
首先,删除任何类型的时Value
,请确保它不再包含任何User
s。显然,删除使用的值会导致错误(以断言的形式)。getNumUses()
这可以通过调用或 better(读:更快) 轻松测试hasNUses(0)
。
当您确定不再使用您的值时,不同类型的值有时需要不同的方法来删除它们。对于你的两种情况:
Function
s 可以通过调用简单地删除operator delete
。这可确保该函数从Module
.Instruction
s 应通过调用 来删除eraseFromParent()
。或者,等效地,首先调用removeFromParent()
然后手动删除它。