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