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

C++中Obj类成员arr存储位置问询:栈还是堆?

关于Obj类成员数组arr的内存位置问题解答
  • 当obj通过std::make_unique动态分配时,arr位于堆内存中。因为std::make_unique<Obj>()会在堆上分配完整的Obj对象,而arr是Obj类的成员数组,属于Obj对象的组成部分,会随整个对象一同被分配在堆上。
  • 若移除Obj2类,直接在main函数中动态分配obj,arr的存储位置不会变化。只要Obj对象是通过动态分配(比如std::make_unique、new)创建的,它的所有成员(包括arr)都会作为对象的一部分存放在堆上。成员的存储位置仅取决于所属对象的分配方式,与对象被哪个类或函数持有无关。

补充:如果是在栈上创建Obj对象(例如Obj obj;),那arr才会位于栈内存中;但只要是动态分配的Obj实例,其成员必然随对象在堆上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:14:52