我正在努力寻找如何释放 LLVM 函数分配的内存。例如,当我调用该函数Function::Create()
来创建 LLVM 函数时,如何释放分配给它的内存?这实际上适用于许多 LLVM 函数,如IRBuilder::CreateAlloca()
,IRBuilder::CreateStore()
等。知道吗?
问问题
1734 次
1 回答
4
首先,当删除任何一种s 时Value
,请确保它不再有任何User
s。显然,删除使用的值会导致错误(以断言的形式)。这可以很容易地通过调用来测试getNumUses()
,或者更好(阅读:更快) hasNUses(0)
。
当你确定你的值不再被使用时,不同类型的值有时需要不同的方式来删除它们。对于您的两种情况:
Function
s 可以通过调用简单地删除operator delete
。这可以确保从Module
.Instruction
s 应该通过调用来删除eraseFromParent()
。或者,等效地,首先调用removeFromParent()
然后手动删除它。
于 2012-05-04T07:09:52.557 回答