【发布时间】:2010-09-15 08:17:53
【问题描述】:
使用 C++ 时, 如果有课:
class MyClass
{
char memory1bye;
int memory4bytes;
int another4bytes;
};
这个类在内存中总共使用了 9 个字节......所以如果我这样做:
MyClass *t1;
这会给我一个可用的类地址,但它会分配 9 个字节吗?它会调用默认构造函数吗? 还是我需要将这 9 个字节分配给类? 如果那时我打电话给:
t1 = (MyClass *)new MyClass;
会被认为是内存泄漏吗?换句话说,旧地址会发生什么?
【问题讨论】:
-
不要误会,但我认为最好的办法是获得一本关于 C++ 的好书。它不仅应该回答所有这些问题,还应该解释何时使用
new,何时不使用new。 -
类的确切大小是
sizeof(MyClass)或sizeof(*t1)(两者都会给出相同的结果)。为了记账,分配可能需要更多时间。
标签: c++ memory-management