スレチだが、動的関数配置に関してはもうちょっと分かりやすい例があった。
> DynamicMethod クラス
> コンパイル、実行、および破棄できる動的メソッドを定義し、表します。 破棄されたメソッドは、ガベージ コレクションの対象となります。
> Just-In-Time (JIT) コンパイラ によって作成された実行可能コードは、DynamicMethod オブジェクトがクリアされたときにクリアされます。
https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.dynamicmethod(v=vs.110).aspx

C/C++ではやってない話だから気味が悪いのだと思うが、とにかくCLRの世界はこんな感じなんだよ。
なおこれは既存のMSIL(中間言語)をコピーするようなので、生成ではなく流用になる。(evalではない)