Skip to content

Latest commit

 

History

History
9 lines (5 loc) · 1.08 KB

File metadata and controls

9 lines (5 loc) · 1.08 KB

16.Block函数指针 的区别?

参考地址

    1. 函数指针仅仅是一个地址,不具备函数原型信息,没有类型限制,比如一个指向变量的指针同样可以指向一个函数,但是 block 作为函数对象,是有部分函数信息的,类型限制更明确。
    1. block 方式便于实现真正的 “函数式” 编程,让函数成为基本的运算元,往更远的方向说,真正的函数式语言可以去掉寄存器(请参考冯诺依曼机器基本架构),提高程序的执行效率,近段时间的语言都支持 lambda 语法,包括JSC++PythonRuby等,可见各个编程语言为改进冯诺依曼架构做出的努力和准备。
    1. 提高程序的健壮性, 定义函数的代码会位于程序的代码段,如果函数内部出现内存溢出,就会直接导致 crash,因为代码段是不可写的;block 作为函数对象在运行时生成,位于栈内,即使出现内存溢出,一般也不会直接导致 crash