我正在努力寻找如何释放LLVM函数分配的内存。例如,当我调用函数Function::Create()
来创建LLVM函数时,如何释放分配给它的内存?同样实际上适用于许多LLVM函数,如IRBuilder::CreateAlloca()
,IRBuilder::CreateStore()
等。任何想法?
答案 0 :(得分:3)
首先,在删除任何类Value
时,请确保它不再有User
个。显然,删除使用的值会导致错误(以断言的形式)。这可以通过调用getNumUses()
或更好(阅读:更快)hasNUses(0)
轻松测试。
当您确定不再使用您的值时,不同类型的值有时需要不同的方法来删除它们。对于你的两个案例:
Function
即可删除operator delete
。这样可以确保从Module
。Instruction
删除eraseFromParent()
。或者,等效地,首先调用removeFromParent()
,然后手动删除它。