函数指针的大小如何始终相同?
How is the size of a fuction pointer always the same?
在使用 Rust 的过程中我发现了这一点:
函数指针的大小怎么能一直一样呢?他们怎么知道函数指针应该指向一个带有这些特定参数和 return 类型的函数?
函数指针总是大小相同,因为它是指针!用 fn
定义的函数存储在静态内存中,永远不会移动。指针足以引用它们。
函数的参数在编译时是已知的,作为类型的一部分。类型检查器使用这些来确保函数被正确调用并生成汇编指令以实际调用函数。在运行时,fn
指针可以被认为是数据,而关于函数参数的详细信息被编码在编译指令中。
在使用 Rust 的过程中我发现了这一点:
函数指针的大小怎么能一直一样呢?他们怎么知道函数指针应该指向一个带有这些特定参数和 return 类型的函数?
函数指针总是大小相同,因为它是指针!用 fn
定义的函数存储在静态内存中,永远不会移动。指针足以引用它们。
函数的参数在编译时是已知的,作为类型的一部分。类型检查器使用这些来确保函数被正确调用并生成汇编指令以实际调用函数。在运行时,fn
指针可以被认为是数据,而关于函数参数的详细信息被编码在编译指令中。