rust学习记录(一)

75 阅读1分钟

内存:值放堆上还是放栈上

rust处理数据时候内存的是用情况:

image.png

结论

对于存入栈上的值,它的大小在编译期就需要确定。 栈上存储的变量生命周期在当前调用栈的作用域内,无法跨调用栈引用。 堆可以存入大小未知或者动态伸缩的数据类型。堆上存储的变量,其生命周期从分配后开始,一直到释放时才结束,因此堆上的变量允许在多个调用栈之间引用。但也导致堆变量的管理非常复杂,手工管理会引发很多内存安全性问题,而自动管理,无论是 GC 还是 ARC,都有性能损耗和其它问题。 一句话对比总结就是:栈上存放的数据是静态的,固定大小,固定生命周期;堆上存放的数据是动态的,不固定大小,不固定生命周期。