You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

包含Vector字段的结构体是在堆还是栈上分配?

关于Train结构体的内存分配问题

Train结构体本身会分配在栈上,但其passenger_ids字段(Vector类型)存储的乘客ID数据会分配在堆上。

具体来说,Rust中的Vector本质是一个轻量级的栈上结构体,它包含三个核心成员:

  • 指向堆内存数据区域的指针
  • 当前存储的元素长度
  • 已分配的内存容量

当你创建Train实例时,整个Train结构体(包括其中的Vector成员)会被放在栈上,但Vector指针所指向的、实际存储乘客ID的数组数据,是分配在堆内存中的。

举个直观的例子:

let train = Train { passenger_ids: vec![1001, 1002, 1003] };

这里的train变量本身位于栈上,而train.passenger_ids里的指针会指向堆上一块存储着[1001, 1002, 1003]的内存区域。

内容的提问来源于stack exchange,提问作者kemicofa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:35:19