使用函数签名,例如:
pub fn hash(input: &[u8]) -> [u8; 32]
字符串这32个字节是如何传递给调用函数的呢?(在优化之前,这可能会将某些部分放入寄存器中。)可能性包括:
free()
只是好奇,我不需要这些信息。答案可能因体系结构而异。
6za6bjd01#
这里既不涉及拷贝也不涉及堆分配。调用方函数在其堆栈上为该值分配空间。被调用方接受一个附加的隐藏参数,即返回值的地址。它把值写在那里。调用方将其堆栈上已分配空间的地址作为隐藏参数的值传递。当然,这些都不能保证。这就是它现在的工作方式。
1条答案
按热度按时间6za6bjd01#
这里既不涉及拷贝也不涉及堆分配。
调用方函数在其堆栈上为该值分配空间。被调用方接受一个附加的隐藏参数,即返回值的地址。它把值写在那里。调用方将其堆栈上已分配空间的地址作为隐藏参数的值传递。
当然,这些都不能保证。这就是它现在的工作方式。