Sim*_*ect 9 c++ heap stack memory-management
如果一个类声明如下:
class MyClass
{
char * MyMember;
MyClass()
{
MyMember = new char[250];
}
~MyClass()
{
delete[] MyMember;
}
};
Run Code Online (Sandbox Code Playgroud)
它可以这样做:
class MyClass
{
char MyMember[250];
};
Run Code Online (Sandbox Code Playgroud)
如何在堆上分配类,如果我这样MyClass * Mine = new MyClass();
做.分配的内存是否也在第二个示例中分配250个字节以及类实例化?并且该成员在MyClass对象的整个生命周期内是否有效?至于第一个例子,在堆上分配类成员是否实用?
是的,是的,是的.
你的第一个例子中有一个bug,但是:因为它的一个数据成员是一个带有堆分配数据的指针,所以它还应该声明一个copy-constructor和赋值运算符,例如. ..
MyClass(const MyClass& rhs)
{
MyMember = new char[250];
memcpy(MyMember, rhs.MyMember, 250);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9026 次 |
最近记录: |