D言語にはfunctionとdelegateというよく似た使い方をするものがあります。
functionはただの関数ポインタ(Cとだいたい同じもの)ですが、delegateはclosureに対する参照も保持してるので必要となるメモリ量が2倍になります。
import std.stdio; void func_for(void function() f) { writeln(f.sizeof); } void delegate_for(void delegate() d) { writeln(d.sizeof); } void func() { // empty. } void main() { func_for(&func); // => 8 delegate_for(() {}); // => 16 }