【发布时间】:2012-02-21 21:45:33
【问题描述】:
在下面C类的对象创建过程中观察到不同大小的内存分配,
class C {
int i;
int j;
};
void f() {
C *c = new C;
C *c2 = new C[2];
C (*c3)[2] = new C[2][2];
}
c 分配了 8 个字节;
c2分配了8*2+4字节;
c3 分配有 8*2*2+4 字节。
为什么 c2 和 c3 需要多 4 个字节?
【问题讨论】:
-
这是我自己的功课。:)
-
你如何测量分配的内存量?
-
在没有表明你至少已经尝试回答问题的情况下,不要在这里提出家庭作业问题。这对你的同学和像我这样花费自己的时间来帮助他人更多地了解编程和计算机科学的人来说是不诚实的。如果你尝试在工业界或学术界做这样的事情,可能会丢掉你的工作。
-
我想你的意思是
*c、*c2和*c3,分别是指针。 -
@Joshua Warner。我一直在使用
objdump并试图理解反汇编代码。 :(
标签: c++ object memory-management new-operator