【发布时间】:2014-10-04 20:36:18
【问题描述】:
如果我有以下代码:
class xyzNode
{
public:
int x;
int y;
int z;
// Other data
};
我主要是这样做的:
xyzNode * example = new xyzNode;
我知道对象本身会被分配到堆上,因为我使用的是“new”操作符,但是对象内部的变量也会被分配到堆上吗?我只是想确认一下,因为我没有为他们使用 new 运算符。
谢谢!
【问题讨论】:
-
是的,所有对象及其成员变量都将在堆上分配。
-
您正在区分“对象”和“它的内部变量”,这实际上并不存在。
-
嘿,亲爱的同事,您为什么要否决这个问题?是的,它确实显示了 OP 的基本误解,但是这些问题如何违反 SO 政策?
-
@HonzaZidek 反对并不意味着“反对政策”。将鼠标悬停在向下投票箭头上以查看其含义。反对政策的问题将获得近距离投票。
-
@Matt:我知道 OP 正在学习一些文本,但需要额外的帮助来理解其含义。他的问题远不是常见的愚蠢的问题,这里是我的家庭作业,而不是我的问题!它并不表明缺乏 OP 自己的工作。在我看来,许多 SE 网站的人对初学者都非常傲慢,并且仅仅因为他们认为这些问题太琐碎而投反对票。
标签: c++ object heap-memory new-operator stack-memory