LLVM 関数によって割り当てられたメモリを解放する方法を見つけるのに少し苦労しています。たとえば、関数を呼び出してFunction::Create()
LLVM 関数を作成する場合、割り当てられたメモリを解放するにはどうすればよいですか? IRBuilder::CreateAlloca()
、 などの多くの LLVM 関数にも同じことが実際に当てはまりますIRBuilder::CreateStore()
。何か考えはありますか?
質問する
1734 次
1 に答える
4
まず第一に、あらゆる種類の を削除するときは、もはや sValue
がないことを確認してください。User
使用済みの値を削除すると、明らかにエラーが発生します (アサーションの形で)。getNumUses()
これは、 、またはより良い (読み取り: より高速) を呼び出すことで簡単にテストできますhasNUses(0)
。
値がもう使用されていないことが確実な場合、異なる種類の値を削除するために異なる方法が必要になることがあります。あなたの2つの場合:
Function
s は、 を呼び出すだけで簡単に削除できますoperator delete
。これにより、関数が から正しく削除されModule
ます。Instruction
を呼び出して削除する必要がありますeraseFromParent()
。または、同等に、最初に呼び出しremoveFromParent()
てから手動で削除します。
于 2012-05-04T07:09:52.557 に答える